Restaurar usuário do banco de dados para login do servidor no SQL Server 2008

2

Temos um backup de banco de dados que precisamos restaurar em um servidor que não possui logins para o banco de dados ... no entanto, todos os usuários estão no banco de dados, por isso esperamos poder restaurá-lo dessa maneira?

Eu já joguei com sp_change_users_login, mas ele só funciona com a criação de novos usuários ou com a vinculação de usuários de bancos de dados órfãos a usuários de servidores existentes (SIDs com a mesma correspondência, mas com os mesmos nomes de usuário).

Eu preciso criar logins do servidor a partir das informações do usuário armazenadas em um banco de dados.

    
por sontek 22.02.2010 / 07:36

6 respostas

5

Se o seu objetivo aqui é recriar os logins com a mesma senha, então você é SOL, isso é armazenado apenas nas tabelas / visualizações no banco de dados mestre. A recomendação de Brian funcionará se a instância antiga ainda estiver ativa, mas caso contrário, será necessário fazer uma das opções abaixo.

  • Recriar os logins
  • Use sp_change_users_login para mapear o usuário do banco de dados para o novo login

ou

  • Criar novos logins
  • Atribuir direitos a esse login no banco de dados restaurado

Observe que esse é apenas o caso dos logins do SQL, se você estiver usando logins do Active Directory, tudo o que precisa fazer é adicioná-los ao servidor e eles terão direitos automaticamente nos bancos de dados restaurados porque a senha e o SID são armazenado no AD e não no banco de dados mestre da instância.

    
por 22.02.2010 / 15:32
3

Eu não acredito que você tenha informações suficientes sobre os usuários no banco de dados para criar os logins. As informações específicas de login residem no banco de dados mestre, enquanto as informações do usuário do banco de dados (incluindo mapeamentos) residem nos bancos de dados individuais.

Se o servidor original estiver disponível, há um procedimento armazenado do sistema, chamado sp_rev_login, que você pode criar com este artigo de suporte da Microsoft que script as informações de login, incluindo os SIDs corretos. Você pode então reconciliar os logins para os usuários.

    
por 22.02.2010 / 13:39
1

Eu tenho um bom script que você pode usar para criar logins de usuários do banco de dados, este script está usando um procedimento armazenado que você pode encontrar no seguinte URL: Como fazer login de logins de banco de dados do usuário no SQL Server 2005

USE MyDatabaseName

DECLARE @login nvarchar(50)

DECLARE logins_cursor CURSOR FOR
SELECT
    l.name
FROM
    sys.database_principals u INNER  JOIN
    sys.server_principals l ON u.sid=l.sid

OPEN logins_cursor
FETCH NEXT FROM logins_cursor INTO @login

WHILE @@FETCH_STATUS = 0
 BEGIN
    EXEC sp_help_revlogin  @login
    FETCH NEXT FROM logins_cursor INTO @login
 END

CLOSE logins_cursor
DEALLOCATE logins_cursor
GO
    
por 30.11.2011 / 15:26
1

tente

EXEC sp_change_users_login 'Report'
EXEC sp_change_users_login 'AUTO_FIX', '<user name>', NULL, '<password>'

Onde está um dos nomes de usuário encontrados na primeira consulta e é a nova senha que você deseja atribuir ao usuário.

Eu descaradamente re-postar informações que acabei de encontrar em - link pensei que será útil para os outros.

    
por 17.08.2012 / 11:55
0

este script funcionou no meu DB

DECLARE @login nvarchar(50)

DECLARE logins_cursor CURSOR FOR

select master..syslogins.name as login_name

from master..syslogins 
WHERE master..syslogins.name<>'BUILTIN\Administrators'

OPEN logins_cursor
FETCH NEXT FROM logins_cursor INTO @login

WHILE @@FETCH_STATUS = 0
 BEGIN
    EXEC dbo.sp_change_users_login 'Auto_Fix' ,  @login
    FETCH NEXT FROM logins_cursor INTO @login
 END

CLOSE logins_cursor
DEALLOCATE logins_cursor
GO


select master..syslogins.name as login_name,
  sysusers.name as user_name
from master..syslogins LEFT OUTER JOIN sysusers
  on master..syslogins.suid = sysusers.suid

- NOTA: use- > master..syslogins.sid = sysusers.sid  no sql2000

    
por 11.03.2013 / 04:28
0

Crie os logins e use:

ALTER USER usr1 WITH LOGIN = login1;
    
por 22.12.2013 / 01:54