Sql-Server-2008-R2
在 SQL Server 2008 R2 數據庫中是否有“Auto_Fix”所有孤立使用者的速記方法?
使用以下方法將單個孤立的 SQL 使用者修復為登錄相當簡單:
EXEC sp_change_users_login ‘Auto_Fix’, ‘user’
我可以編寫腳本,但是是否有一個現有的儲存過程會自動嘗試修復給定數據庫中的每個孤立使用者?
Ted Krueger(推特上的@onpnt)寫了一個很棒的腳本來做到這一點。它為沒有登錄名的任何使用者添加登錄名並執行 auto_fix。他甚至寫了一篇文章,其中包括修復 Windows 登錄:
http://blogs.lessthandot.com/index.php/DataMgmt/DBAdmin/fixing-orphaned-database-users
當然,如果您想先對其進行測試(或僅執行審計),您可以註釋掉操作行 (
EXEC
),然後列印出結果。
基於上述腳本,我們可以像這樣使用 sp_MSForeachdb 修復實例中的所有使用者
declare @name varchar(150) declare @query nvarchar (500) DECLARE cur CURSOR FOR select name from master..syslogins Open cur FETCH NEXT FROM cur into @name WHILE @@FETCH_STATUS = 0 BEGIN set @query='USE [?] IF ''?'' <> ''master'' AND ''?'' <> ''model'' AND ''?'' <> ''msdb'' AND ''?'' <> ''tempdb'' BEGIN exec sp_change_users_login ''Auto_Fix'', '''+ @name +''' END' EXEC master..sp_MSForeachdb @query FETCH NEXT FROM cur into @name END CLOSE cur DEALLOCATE cur
希望它會有所幫助