授予访问数百个SP的权限?
时间:2020-03-05 18:58:01 来源:igfitidea点击:
在Sql Server 2000/2005中,我有几个NT用户组,这些用户组需要被授予对数百个存储过程的访问权限。
有一个简单的好方法吗?
解决方案
回答
- 在sql server中创建角色。
- 编写一个脚本,授予该角色使用这些存储库的权限。
- 将这些NT用户组添加到该角色。
回答
这是我用于向许多过程授予权限的脚本:
DECLARE @DB sysname ; set @DB = DB_NAME() DECLARE @U sysname ; set @U = QUOTENAME('UserID') DECLARE @ID integer, @LAST_ID integer, @NAME varchar(1000), @SQL varchar(4000) SET @LAST_ID = 0 WHILE @LAST_ID IS NOT NULL BEGIN SELECT @ID = MIN(id) FROM dbo.sysobjects WHERE id > @LAST_ID AND type = 'P' AND category = 0 SET @LAST_ID = @ID -- We have a record so go get the name IF @ID IS NOT NULL BEGIN SELECT @NAME = name FROM dbo.sysobjects WHERE id = @ID -- Build the DCL to do the GRANT SET @SQL = 'GRANT EXECUTE ON ' + @NAME + ' TO ' + @U -- Run the SQL Statement you just generated EXEC master.dbo.xp_execresultset @SQL, @DB END END
我们可以修改选择以进入一组更特定的存储过程。