所以,我一直在冥思苦想,我在我的好友的網站上找到的代碼:「循環」通過與sp_MSforeachdb數據庫,並返回1點的數據集
8 Steps to Moving Database Logins
我想要生成的數據庫級安全性,角色和顯式權限語句,所以我不會一遍又一遍地複製和粘貼,以便它們可以運行在服務器上的所有數據庫(當然減去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
我如何修改我有什麼,它按原樣工作,但不方便,使用表變量,臨時表,等等等等所有語句都在一個數據集?
這是有效的。我將嘗試添加另外兩個數據庫類別。我不敢相信這很簡單。我嘗試了一些接近但卻不斷出錯的東西。 – DavidStein
很酷。我的不好,我認爲你需要把每個數據庫的燙髮放回去。那爲什麼我添加了使用語句刪除SELECT''使用[?]'';從@FullStatement初始化開始。 – Norman
對不起,正常,當我意識到時,我刪除並重新輸入我的評論。你是對的。我只留下使用陳述。 – DavidStein