所以,我一直在努力解决我在好友网站上找到的代码:
我想在一个输出中生成数据库级别安全性、角色和显式权限语句,这样我就不会一遍又一遍地复制和粘贴,以便它们为服务器上的所有数据库运行(当然要减去 tempdb)。
Declare @FullStatement varchar(MAX)
Set @FullStatement = ' use [?]; SELECT dp.state_desc + N'' '' + dp.permission_name + N'' TO '' + cast(QUOTENAME(dpl.name COLLATE DATABASE_DEFAULT) as nvarchar(500)) AS TSQLScript
FROM sys.database_permissions AS dp
INNER JOIN sys.database_principals AS dpl ON (dp.grantee_principal_id = dpl.principal_id)
WHERE dp.major_id = 0
and dpl.name not like ''##%'' -- excluds PBM accounts
and dpl.name not in (''dbo'', ''sa'', ''public'')
ORDER BY dp.permission_name ASC, dp.state_desc ASC'
Exec sp_MSforeachdb @FullStatement
如何使用表变量、临时表等修改我所拥有的,按原样工作但不方便,以便所有语句都在一个数据集中?