SQL Server 2008 R2 데이터베이스에서 모든 고아 사용자를 '자동 수정'하는 속기 방법이 있습니까?


16

분리 된 단일 SQL 사용자를 로그인을 사용하여 다음과 같이 수정하는 것이 매우 간단합니다.

EXEC sp_change_users_login 'Auto_Fix', 'user'

나는 이것을 스크립트 할 수는 있지만 주어진 데이터베이스에서 모든 고아 사용자를 자동으로 수정하려고 시도하는 기존 저장 프로 시저가 있습니까?

답변:


15

테드 크루거 ( Twitt Krueger) ( @ onpnt on twitter)는이 작업을 수행하는 훌륭한 스크립트를 작성했습니다. 로그인하지 않고 모든 사용자의 로그인을 추가하고 auto_fix를 실행합니다. 그는 Windows 로그인 수정을 포함하여 하나를 작성했습니다.

http://blogs.lessthandot.com/index.php/DataMgmt/DBAdmin/fixing- 분리 된-데이터베이스-사용자

물론 먼저 테스트하거나 감사를 수행하려는 경우 작업 줄을 주석 처리 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 각 데이터베이스에 대한 사용자 다시 매핑 사용자 (범위는 데이터베이스 레벨) 및 로그인 (범위는 인스턴스 레벨)
Phú Nguyễn Dương

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.