Existe uma maneira abreviada de 'Auto_Fix' todos os usuários órfãos em um banco de dados SQL Server 2008 R2?


16

É bastante simples corrigir um único usuário órfão do SQL para um logon usando:

EXEC sp_change_users_login 'Correção automática', 'usuário'

Eu poderia escrever isso, mas existe um procedimento armazenado existente que tenta automaticamente corrigir todos os usuários órfãos em um determinado banco de dados?

Respostas:



2

Abaixo está o script simples que faz o trabalho perfeitamente -

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

com base no script acima, podemos corrigir todos os usuários em uma instância usando sp_MSForeachdb como este

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

espero que ajude


bem, i pode explicar que, como este: 1 buscar cada login em syslogins, dois re-mapa utilizador (escopo é o nível de base de dados) e de início de sessão (escopo é nível exemplo) para cada banco de dados
Phú Nguyen Dương

0

Esse seria um ótimo caso de uso para usar o comando dbatools Repair-DbaDbOrphanUser

Primeiro você pode identificar os usuários órfãos

Get-DbaDbOrphanUser -SqlInstance $sqlinstance

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

e depois resolva-os com

Repair-DbaDbOrphanUser -SqlInstance $sqlinstance

ComputerName : SQL01
InstanceName : MSSQLSERVER
SqlInstance  : SQL01
DatabaseName : SockFactoryApp
User         : SockFactoryApp_User
Status       : Success
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.