SQL Server 2008 R2データベース内のすべての孤立ユーザーを「自動修正」する簡単な方法はありますか?


16

以下を使用して、孤立した単一のSQLユーザーをログインに修正するのはかなり簡単です。

EXEC sp_change_users_login 'Auto_Fix'、 'user'

これをスクリプト化することはできますが、特定のデータベース内のすべての孤立ユーザーを自動的に修正しようとする既存のストアドプロシージャはありますか

回答:


15

Ted Krueger(Twitterの@onpnt)は、これを行う素晴らしいスクリプトを作成しました。ログインのないすべてのユーザーのログインを追加し、auto_fixを実行します。彼は、Windowsログインの修正を含むものも書きました。

http://blogs.lessthandot.com/index.php/DataMgmt/DBAdmin/fixing-orphaned-database-users

もちろん、最初にテストする(または単に監査を実行する)場合は、アクション行(EXEC)をコメントアウトして、結果を出力するだけです。


2

以下は、仕事を完璧に行う簡単なスクリプトです。

USE DBNAME     ----- change db name for which you waant to fix orphan users issue

GO


declare @name varchar(150)

DECLARE cur CURSOR FOR
    select name from master..syslogins

Open cur

FETCH NEXT FROM cur into @name

WHILE @@FETCH_STATUS = 0
BEGIN

    EXEC sp_change_users_login 'AUTO_FIX', @name

    FETCH NEXT FROM cur into @name

END

CLOSE cur
DEALLOCATE cur

2

上記のスクリプトに基づいて、次のように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

それが役立つことを願って


よく、私はこのようなことを説明することができる:1 syslogins内の各ログインをフェッチ、2再マップユーザは、各データベースのログイン(スコープは、インスタンスレベルである)(スコープは、データベース・レベルである)
PHUグエンユーンは、

0

これは、dbatoolsコマンドRepair-DbaDbOrphanUserを使用するための優れた使用例です。

まず、孤立したユーザーを特定できます

Get-DbaDbOrphanUser -SqlInstance $sqlinstance

ComputerName : SQL01
InstanceName : MSSQLSERVER
SqlInstance  : SQL01
DatabaseName : SockFactoryApp
User         : SockFactoryApp_User

そして、それらを解決します

Repair-DbaDbOrphanUser -SqlInstance $sqlinstance

ComputerName : SQL01
InstanceName : MSSQLSERVER
SqlInstance  : SQL01
DatabaseName : SockFactoryApp
User         : SockFactoryApp_User
Status       : Success
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.