1。
如果 我写了个函数 想绑定到某字段上
但不能用可视化绑定 用sql语言绑定 应该怎么做?函数是fn_GetDepth() 想绑定到Depth字段上 该函数的参数是该表的另一个字段ID注意,重点是用 T-sql语言,不能用可视化操作。 2.
重点:不能用可视化操作,全部用T-sql语言编写
比如我创建了个数据库AAA
现在想创建一个SQL Server验证的登录名AD,这个登录名只能执行该数据库里已有的存储过程(重点)就是说 用户,角色,权限,这些东西该怎么配 全部用T-sql语言写好跪求各位大侠啦
如果 我写了个函数 想绑定到某字段上
但不能用可视化绑定 用sql语言绑定 应该怎么做?函数是fn_GetDepth() 想绑定到Depth字段上 该函数的参数是该表的另一个字段ID注意,重点是用 T-sql语言,不能用可视化操作。 2.
重点:不能用可视化操作,全部用T-sql语言编写
比如我创建了个数据库AAA
现在想创建一个SQL Server验证的登录名AD,这个登录名只能执行该数据库里已有的存储过程(重点)就是说 用户,角色,权限,这些东西该怎么配 全部用T-sql语言写好跪求各位大侠啦
go
use aa
go
create login ad with password ='ad'
go
create user ad for login ad
gocreate proc p_test
as
select getdate()
gogrant execute on p_test to ad
2\
create database aaa
go
use aaa
go
--创建角色 r_test
EXEC sp_addrole 'r_test'--授予 r_test 对 jobs 表的所有权限
GRANT ALL ON jobs TO r_test
--授予角色 r_test 对 titles 表的 SELECT 权限
GRANT SELECT ON titles TO r_test--添加登录 l_test,设置密码为pwd,默认数据库为pubs
EXEC sp_addlogin 'l_test','pwd','pubs'--为登录 l_test 在数据库 pubs 中添加安全账户 u_test
EXEC sp_grantdbaccess 'l_test','u_test'--添加 u_test 为角色 r_test 的成员
EXEC sp_addrolemember 'r_test','u_test'--拒绝安全账户 u_test 对 titles 表的 SELECT 权限
DENY SELECT ON titles TO u_test/*--完成上述步骤后,用 l_test 登录,可以对jobs表进行所有操作,但无法对titles表查询,虽然角色 r_test 有titles表的select权限,但已经在安全账户中明确拒绝了对titles的select权限,所以l_test无titles表的select权限--*/--从数据库 pubs 中删除安全账户
EXEC sp_revokedbaccess 'u_test'--删除登录 l_test
EXEC sp_droplogin 'l_test'--删除角色 r_test
EXEC sp_droprole 'r_test'
1.我的Depth字段已经存在 能不能在不添加的情况下绑定
2.我希望user对所有存储过程都能执行,而不是逐个授权
麻烦大家了
所以1楼的方法不能用
CREATE TABLE Organization
(
OrgID INT NOT NULL IDENTITY(1,1) PRIMARY KEY,
Name NVARCHAR(50) NOT NULL UNIQUE,
ParentID INT NOT NULL,
Depth INT NOT NULL,
Re nvarchar(200),
InsertOn DATETIME DEFAULT GETDATE() NOT NULL,
UpdateOn DATETIME DEFAULT NULL,
IsValid BIT DEFAULT '1' NOT NULL
)
GO/****** 对象: Table [dbo].[Organization] 脚本日期: 09/10/2009 15:40:14 **
任务:Depth字段的获取函数
作者:
****************************************************************************/
CREATE FUNCTION fn_GetDepth
(
@OrgID INT --节点ID
)
RETURNS INT
AS
BEGIN
DECLARE @Depth INT
DECLARE @ParentID INT
SELECT @ParentID = ParentID FROM Organization WHERE OrgID = @OrgID
--判断是否存在为根节点
IF @ParentID = 0
SET @Depth = 1
ELSE
SELECT @Depth = Depth+1 FROM dbo.Organization WHERE OrgID=@ParentID
RETURN @Depth
END
GO