Como transferir logins e senhas entre instâncias do SQL Server

Traduções deste artigo Traduções deste artigo
ID do artigo: 246133 - Exibir os produtos aos quais esse artigo se aplica.
Expandir tudo | Recolher tudo

Neste artigo

Sumário

Após você mover bancos de dados para um novo servidor, os usuários talvez não seja é possível fazer logon novo servidor. Em vez disso, eles recebem o seguinte erro mensagem:
Msg 18456, nível 16, estado 1
Login Falha do usuário '% ls'.
Você deve transferir os logins e senhas para o novo servidor. Este artigo descreve como você transferir logins e senhas para um novo servidor.

Como para transferir logins e senhas entre servidores que estejam executando o SQL Server 7.0

O objeto do SQL Server 7.0 Data Transformation Services (DTS) Transferir recurso transfere logons e usuários entre dois servidores, mas Não transfira as senhas para SQL Server autenticados logons. Para transferir logins e senhas de um servidor que esteja executando o SQL Server 7.0 para outro servidor que esteja executando o SQL Server 7.0, siga as etapas na seção "Uma solução completa para transferir logins e senhas entre versões diferentes do SQL Server".

Como transferir logins e senhas do SQL Server 7.0 para SQL Server 2000 ou entre servidores que estejam executando o SQL Server 2000

Para transferir logins e senhas de um servidor SQL Server 7.0 uma instância do SQL Server 2000 ou entre duas instâncias do SQL Server 2000, Você pode usar o pacote DTS nova transferência tarefa logons no SQL Server 2000. Para fazer isso, execute estas etapas:
  1. Conectar ao servidor de destino do SQL Server 2000, vá para o Data Transformation Services no SQL Server Enterprise Manager, expanda a pasta, clique com botão direito Pacotes locaise, em seguida, clique em Novo pacote.
  2. Após os DTS designer abre do pacote, clique em Tarefa de logons de transferência no menu tarefa . Preencha as informações sobre as guias de origem, destino e Logins conforme apropriado.

    Importante O servidor de destino do SQL Server 2000 não pode estar executando a versão de 64 bits do SQL Server 2000. Componentes DTS para a versão de 64 bits do SQL Server 2000 não estão disponíveis. Se você estiver importando logons de uma instância do SQL Server que está em um computador separado, será sua instância do SQL Server deve ser executado sob uma conta de domínio para concluir a tarefa.

    Observação O método DTS transferirá as senhas, mas não o SID original. Se um logon não é criado usando o SID e o usuário original bancos de dados também são transferidos para um novo servidor, os usuários do banco de dados será órfãos na página de login. Para transferir o SID original e ignorar os órfãos usuários, siga as etapas na seção "Uma solução completa para transferir logins e senhas entre versões diferentes do SQL Server".

Como transferir logins e senhas entre instâncias do SQL Server 2005

Para obter mais informações sobre como transferir os logins e senhas entre instâncias do SQL Server 2005, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
918992Como transferir logins e senhas entre instâncias do SQL Server 2005

Uma solução completa para transferir logins e senhas entre versões diferentes do SQL Server

Para fazer isso, use um dos seguintes métodos.
Anotações
  • Os scripts em métodos a seguir criam dois procedimentos armazenados que são nomeados o procedimento sp_hexadecimal armazenado e o procedimento sp_help_revlogin armazenados no banco de dados mestre .
  • Os scripts são dependentes de tabelas de sistema do SQL Server. A estrutura dessas tabelas pode alterar entre versões do SQL Server. Não é recomendado selecionar diretamente das tabelas do sistema.
  • Revise os comentários no final deste artigo para importantes informações sobre as etapas nos métodos.
  • Método 2 atribui logons para funções.

Método 1

Este método se aplica para os seguintes cenários:
  • Você transferir logins e senhas do SQL Server 7.0 para SQL Server 7.0.
  • Você transferir logins e senhas do SQL Server 7.0 para SQL Server 2000.
  • Você transferir logins e senhas entre servidores que executam o SQL Server 2000.
Para transferir logins e senhas entre versões diferentes do SQL Server, execute estas etapas:
  1. Execute o seguinte script na fonte de SQL Server. Continue na etapa 2 quando você terminar de criar o sp_help_revlogin o procedimento armazenado.
    ----- Begin Script, Create sp_help_revlogin procedure -----
    
    USE master
    GO
    IF OBJECT_ID ('sp_hexadecimal') IS NOT NULL
      DROP PROCEDURE sp_hexadecimal
    GO
    CREATE PROCEDURE sp_hexadecimal
        @binvalue varbinary(256),
        @hexvalue varchar(256) OUTPUT
    AS
    DECLARE @charvalue varchar(256)
    DECLARE @i int
    DECLARE @length int
    DECLARE @hexstring char(16)
    SELECT @charvalue = '0x'
    SELECT @i = 1
    SELECT @length = DATALENGTH (@binvalue)
    SELECT @hexstring = '0123456789ABCDEF' 
    WHILE (@i <= @length) 
    BEGIN
      DECLARE @tempint int
      DECLARE @firstint int
      DECLARE @secondint int
      SELECT @tempint = CONVERT(int, SUBSTRING(@binvalue,@i,1))
      SELECT @firstint = FLOOR(@tempint/16)
      SELECT @secondint = @tempint - (@firstint*16)
      SELECT @charvalue = @charvalue +
        SUBSTRING(@hexstring, @firstint+1, 1) +
        SUBSTRING(@hexstring, @secondint+1, 1)
      SELECT @i = @i + 1
    END
    SELECT @hexvalue = @charvalue
    GO
    
    IF OBJECT_ID ('sp_help_revlogin') IS NOT NULL
      DROP PROCEDURE sp_help_revlogin 
    GO
    CREATE PROCEDURE sp_help_revlogin @login_name sysname = NULL AS
    DECLARE @name    sysname
    DECLARE @xstatus int
    DECLARE @binpwd  varbinary (256)
    DECLARE @txtpwd  sysname
    DECLARE @tmpstr  varchar (256)
    DECLARE @SID_varbinary varbinary(85)
    DECLARE @SID_string varchar(256)
    
    IF (@login_name IS NULL)
      DECLARE login_curs CURSOR FOR 
        SELECT sid, name, xstatus, password FROM master..sysxlogins 
        WHERE srvid IS NULL AND name <> 'sa'
    ELSE
      DECLARE login_curs CURSOR FOR 
        SELECT sid, name, xstatus, password FROM master..sysxlogins 
        WHERE srvid IS NULL AND name = @login_name
    OPEN login_curs 
    FETCH NEXT FROM login_curs INTO @SID_varbinary, @name, @xstatus, @binpwd
    IF (@@fetch_status = -1)
    BEGIN
      PRINT 'No login(s) found.'
      CLOSE login_curs 
      DEALLOCATE login_curs 
      RETURN -1
    END
    SET @tmpstr = '/* sp_help_revlogin script ' 
    PRINT @tmpstr
    SET @tmpstr = '** Generated ' 
      + CONVERT (varchar, GETDATE()) + ' on ' + @@SERVERNAME + ' */'
    PRINT @tmpstr
    PRINT ''
    PRINT 'DECLARE @pwd sysname'
    WHILE (@@fetch_status <> -1)
    BEGIN
      IF (@@fetch_status <> -2)
      BEGIN
        PRINT ''
        SET @tmpstr = '-- Login: ' + @name
        PRINT @tmpstr 
        IF (@xstatus & 4) = 4
        BEGIN -- NT authenticated account/group
          IF (@xstatus & 1) = 1
          BEGIN -- NT login is denied access
            SET @tmpstr = 'EXEC master..sp_denylogin ''' + @name + ''''
            PRINT @tmpstr 
          END
          ELSE BEGIN -- NT login has access
            SET @tmpstr = 'EXEC master..sp_grantlogin ''' + @name + ''''
            PRINT @tmpstr 
          END
        END
        ELSE BEGIN -- SQL Server authentication
          IF (@binpwd IS NOT NULL)
          BEGIN -- Non-null password
            EXEC sp_hexadecimal @binpwd, @txtpwd OUT
            IF (@xstatus & 2048) = 2048
              SET @tmpstr = 'SET @pwd = CONVERT (varchar(256), ' + @txtpwd + ')'
            ELSE
              SET @tmpstr = 'SET @pwd = CONVERT (varbinary(256), ' + @txtpwd + ')'
            PRINT @tmpstr
    	EXEC sp_hexadecimal @SID_varbinary,@SID_string OUT
            SET @tmpstr = 'EXEC master..sp_addlogin ''' + @name 
              + ''', @pwd, @sid = ' + @SID_string + ', @encryptopt = '
          END
          ELSE BEGIN 
            -- Null password
    	EXEC sp_hexadecimal @SID_varbinary,@SID_string OUT
            SET @tmpstr = 'EXEC master..sp_addlogin ''' + @name 
              + ''', NULL, @sid = ' + @SID_string + ', @encryptopt = '
          END
          IF (@xstatus & 2048) = 2048
            -- login upgraded from 6.5
            SET @tmpstr = @tmpstr + '''skip_encryption_old''' 
          ELSE 
            SET @tmpstr = @tmpstr + '''skip_encryption'''
          PRINT @tmpstr 
        END
      END
      FETCH NEXT FROM login_curs INTO @SID_varbinary, @name, @xstatus, @binpwd
      END
    CLOSE login_curs 
    DEALLOCATE login_curs 
    RETURN 0
    GO
     ----- End Script -----
    
    
  2. Depois de criar o procedimento sp_help_revlogin armazenados, execute o procedimento sp_help_revlogin do analisador de consultas no servidor de origem. O procedimento sp_help_revlogin armazenados pode ser usado no SQL Server 7.0 e SQL Server 2000. A saída do procedimento sp_help_revlogin armazenados é scripts de login que criar logons com o SID e senha originais. Salvar a saída e, em seguida, colar e executá-lo em consulta Analisador de destino do SQL Server. Por exemplo:
    EXEC master..sp_help_revlogin
    

Método 2

Este método se aplica para os seguintes cenários:
  • Você transferir logins e senhas do SQL Server 7.0 para SQL Server 2005.
  • Você transferir logins e senhas do SQL Server 2000 para o SQL Server 2005.
  • Você pode atribuir logons para funções.
Para transferir logins e senhas entre versões diferentes do SQL Server e, em seguida, atribuir logons para funções, execute estas etapas:
  1. Execute o seguinte script na fonte de SQL Server.
    USE master 
    GO 
    IF OBJECT_ID ('sp_hexadecimal') IS NOT NULL 
    DROP PROCEDURE sp_hexadecimal 
    GO 
    CREATE PROCEDURE sp_hexadecimal 
    @binvalue varbinary(256), 
    @hexvalue varchar(256) OUTPUT 
    AS 
    DECLARE @charvalue varchar(256) 
    DECLARE @i int 
    DECLARE @length int 
    DECLARE @hexstring char(16) 
    SELECT @charvalue = '0x' 
    SELECT @i = 1 
    SELECT @length = DATALENGTH (@binvalue) 
    SELECT @hexstring = '0123456789ABCDEF' 
    WHILE (@i <= @length) 
    BEGIN 
    DECLARE @tempint int 
    DECLARE @firstint int 
    DECLARE @secondint int 
    SELECT @tempint = CONVERT(int, SUBSTRING(@binvalue,@i,1)) 
    SELECT @firstint = FLOOR(@tempint/16) 
    SELECT @secondint = @tempint - (@firstint*16) 
    SELECT @charvalue = @charvalue + 
    SUBSTRING(@hexstring, @firstint+1, 1) + 
    SUBSTRING(@hexstring, @secondint+1, 1) 
    SELECT @i = @i + 1 
    END 
    SELECT @hexvalue = @charvalue 
    GO 
    
    IF OBJECT_ID ('sp_help_revlogin_2000_to_2005') IS NOT NULL 
    DROP PROCEDURE sp_help_revlogin_2000_to_2005 
    GO 
    CREATE PROCEDURE sp_help_revlogin_2000_to_2005 
    
    @login_name sysname = NULL, 
    @include_db bit = 0, 
    @include_role bit = 0 
    
    AS 
    DECLARE @name sysname 
    DECLARE @xstatus int 
    DECLARE @binpwd varbinary (256) 
    DECLARE @dfltdb varchar (256) 
    DECLARE @txtpwd sysname 
    DECLARE @tmpstr varchar (256) 
    DECLARE @SID_varbinary varbinary(85) 
    DECLARE @SID_string varchar(256) 
    
    IF (@login_name IS NULL) 
    DECLARE login_curs CURSOR STATIC FOR 
    SELECT sid, [name], xstatus, password, isnull(db_name(dbid), 'master') 
    FROM master.dbo.sysxlogins 
    WHERE srvid IS NULL AND 
    [name] <> 'sa' 
    ELSE 
    DECLARE login_curs CURSOR FOR 
    SELECT sid, [name], xstatus, password, isnull(db_name(dbid), 'master') 
    FROM master.dbo.sysxlogins 
    WHERE srvid IS NULL AND 
    [name] = @login_name 
    
    OPEN login_curs 
    
    FETCH NEXT FROM login_curs INTO @SID_varbinary, @name, @xstatus, @binpwd, @dfltdb 
    
    IF (@@fetch_status = -1) 
    BEGIN 
    PRINT 'No login(s) found.' 
    CLOSE login_curs 
    DEALLOCATE login_curs 
    RETURN -1 
    END 
    
    SET @tmpstr = '/* sp_help_revlogin script ' 
    PRINT @tmpstr 
    SET @tmpstr = '** Generated ' 
    + CONVERT (varchar, GETDATE()) + ' on ' + @@SERVERNAME + ' */' 
    PRINT @tmpstr 
    PRINT '' 
    PRINT '' 
    PRINT '' 
    PRINT '/***** CREATE LOGINS *****/' 
    
    WHILE @@fetch_status = 0 
    BEGIN 
    PRINT '' 
    SET @tmpstr = '-- Login: ' + @name 
    PRINT @tmpstr 
    
    IF (@xstatus & 4) = 4 
    BEGIN -- NT authenticated account/group 
    IF (@xstatus & 1) = 1 
    BEGIN -- NT login is denied access 
    SET @tmpstr = '' --'EXEC master..sp_denylogin ''' + @name + '''' 
    PRINT @tmpstr 
    END 
    ELSE 
    BEGIN -- NT login has access 
    SET @tmpstr = 'IF NOT EXISTS (SELECT * FROM sys.server_principals WHERE [name] = ''' + @name + ''')' 
    PRINT @tmpstr 
    SET @tmpstr = CHAR(9) + 'CREATE LOGIN [' + @name + '] FROM WINDOWS' 
    PRINT @tmpstr 
    END 
    END 
    ELSE 
    BEGIN -- SQL Server authentication 
    EXEC sp_hexadecimal @SID_varbinary, @SID_string OUT 
    
    IF (@binpwd IS NOT NULL) 
    BEGIN -- Non-null password 
    EXEC sp_hexadecimal @binpwd, @txtpwd OUT 
    SET @tmpstr = 'CREATE LOGIN [' + @name + '] WITH PASSWORD=' + @txtpwd + ' HASHED' 
    END 
    ELSE 
    BEGIN -- Null password 
    SET @tmpstr = 'CREATE LOGIN [' + @name + '] WITH PASSWORD=''''' 
    END 
    
    SET @tmpstr = @tmpstr + ', CHECK_POLICY=OFF, SID=' + @SID_string 
    PRINT @tmpstr 
    END 
    
    FETCH NEXT FROM login_curs INTO @SID_varbinary, @name, @xstatus, @binpwd, @dfltdb 
    END 
    
    IF @include_db = 1 
    BEGIN 
    PRINT '' 
    PRINT '' 
    PRINT '' 
    PRINT '/***** SET DEFAULT DATABASES *****/' 
    
    FETCH FIRST FROM login_curs INTO @SID_varbinary, @name, @xstatus, @binpwd, @dfltdb 
    
    WHILE @@fetch_status = 0 
    BEGIN 
    PRINT '' 
    SET @tmpstr = '-- Login: ' + @name 
    PRINT @tmpstr 
    
    SET @tmpstr = 'ALTER LOGIN [' + @name + '] WITH DEFAULT_DATABASE=[' + @dfltdb + ']' 
    PRINT @tmpstr 
    
    FETCH NEXT FROM login_curs INTO @SID_varbinary, @name, @xstatus, @binpwd, @dfltdb 
    END 
    END 
    
    IF @include_role = 1 
    BEGIN 
    PRINT '' 
    PRINT '' 
    PRINT '' 
    PRINT '/***** SET SERVER ROLES *****/' 
    
    FETCH FIRST FROM login_curs INTO @SID_varbinary, @name, @xstatus, @binpwd, @dfltdb 
    
    WHILE @@fetch_status = 0 
    BEGIN 
    PRINT '' 
    SET @tmpstr = '-- Login: ' + @name 
    PRINT @tmpstr 
    
    IF @xstatus &16 = 16 -- sysadmin 
    BEGIN 
    SET @tmpstr = 'exec master.dbo.sp_addsrvrolemember @loginame=''' + @name + ''', @rolename=''sysadmin''' 
    PRINT @tmpstr 
    END 
    
    IF @xstatus &32 = 32 -- securityadmin 
    BEGIN 
    SET @tmpstr = 'exec master.dbo.sp_addsrvrolemember @loginame=''' + @name + ''', @rolename=''securityadmin''' 
    PRINT @tmpstr 
    END 
    
    IF @xstatus &64 = 64 -- serveradmin 
    BEGIN 
    SET @tmpstr = 'exec master.dbo.sp_addsrvrolemember @loginame=''' + @name + ''', @rolename=''serveradmin''' 
    PRINT @tmpstr 
    END 
    
    IF @xstatus &128 = 128 -- setupadmin 
    BEGIN 
    SET @tmpstr = 'exec master.dbo.sp_addsrvrolemember @loginame=''' + @name + ''', @rolename=''setupadmin''' 
    PRINT @tmpstr 
    END 
    
    IF @xstatus &256 = 256 --processadmin 
    BEGIN 
    SET @tmpstr = 'exec master.dbo.sp_addsrvrolemember @loginame=''' + @name + ''', @rolename=''processadmin''' 
    PRINT @tmpstr 
    END 
    
    IF @xstatus &512 = 512 -- diskadmin 
    BEGIN 
    SET @tmpstr = 'exec master.dbo.sp_addsrvrolemember @loginame=''' + @name + ''', @rolename=''diskadmin''' 
    PRINT @tmpstr 
    END 
    
    IF @xstatus &1024 = 1024 -- dbcreator 
    BEGIN 
    SET @tmpstr = 'exec master.dbo.sp_addsrvrolemember @loginame=''' + @name + ''', @rolename=''dbcreator''' 
    PRINT @tmpstr 
    END 
    
    IF @xstatus &4096 = 4096 -- bulkadmin 
    BEGIN 
    SET @tmpstr = 'exec master.dbo.sp_addsrvrolemember @loginame=''' + @name + ''', @rolename=''bulkadmin''' 
    PRINT @tmpstr 
    END 
    
    FETCH NEXT FROM login_curs INTO @SID_varbinary, @name, @xstatus, @binpwd, @dfltdb 
    END 
    END 
    
    CLOSE login_curs 
    DEALLOCATE login_curs 
    RETURN 0 
    GO
    
    exec sp_help_revlogin_2000_to_2005 @login_name=NULL, @include_db=1, @include_role=1
    GO
  2. Salvar a saída e, em seguida, cole e execute a saída no SQL Server Management Studio no destino SQL Server 2005.
Observação Se o SQL Server de origem contiver um logon que tenha uma senha em branco, o resultado contém uma instrução semelhante à seguinte.
CREATE LOGIN LoginName WITH PASSWORD = '', CHECK_POLICY = OFF, SID = MySID

Comentários

  • Revise o script de saída com cuidado antes de executá-lo na destino do SQL Server. Se você precisar transferir logins para uma instância do SQL Servidor em um domínio diferente a instância de origem do SQL Server, edite o script gerado pelo procedimento sp_help_revlogin e substitua o nome de domínio com o novo domínio a instruções sp_grantlogin . Porque os logins integrados que receberam acesso a novo domínio não terá o mesmo SID como os logons no domínio original, o os usuários do banco de dados serão ser órfãos a partir destes inícios de sessão. Para resolver esses órfãos usuários, consulte os artigos citados no item de marcador a seguir. Se você transferir logins integrados entre instâncias do SQL servidores no mesmo domínio, o mesmo SID é usado e o usuário provavelmente não será ser órfãos.
  • Depois de mover os logons, usuários não podem ter permissões para acessar bancos de dados que também foram movidos. Esse problema é descrito como um "usuário órfão". Se você tentar conceder o acesso de logon ao banco de dados, ele pode Falha indicando que o usuário já existe:
    Microsoft SQL-DMO (ODBC SQLState: 42000) erro 15023: usuário ou função '% s' já existe no o banco de dados atual.
    Para obter instruções sobre como mapear logins para os usuários do banco de dados para resolver órfãos logins do SQL Server e logins integrados, Consulte o seguinte artigo na Base de dados de Conhecimento da Microsoft:
    240872 Como resolver problemas de permissão quando você move um banco de dados entre servidores que estejam executando o SQL Server
    Para obter instruções sobre como usar o sp_change_users_login armazenadas procedimento para corrigir os usuários órfãos, um por um (isso só resolverá problemas com usuários órfãos a partir de logins SQL), consulte o seguinte artigo na Base de dados de Conhecimento da Microsoft:
    274188 O tópico "Solucionando problemas de usuários Orphaned" nos Manuais Online está incompleto
  • Se a transferência de logons e senhas é parte de uma movimentação bancos de dados para um novo servidor executando o SQL Server, consulte o seguinte artigo na Base de Conhecimento da Microsoft para obter uma descrição do fluxo de trabalho e das etapas envolvidos:
    314546 Como mover bancos de dados entre computadores que estejam executando o SQL Server
  • Você pode fazer isso por causa do parâmetro @encryptopt no sp_addlogin procedimento armazenado do sistema, que permite que um logon a ser criado por usando a senha criptografada. Para obter mais informações sobre esse procedimento, consulte o tópico "sp_addlogin (T-SQL)" nos Manuais Online do SQL Server.
  • Por padrão, somente membros da função de servidor sysadminfixed pode selecionar a tabela sysxlogins . A menos que um membro da função sysadmin concede a necessária permissões, os usuários finais não é possível criar ou executar esses procedimentos armazenados.
  • Essa abordagem não tenta transferir o banco de dados padrão informações para um logon específico porque o banco de dados padrão nem sempre pode existe no servidor de destino. Para definir o banco de dados padrão para um logon Você pode usar sp_defaultdb procedimento armazenado do sistema, passando a ele o nome de login e a banco de dados padrão como argumentos. Para obter mais informações sobre como usar este procedimento, Consulte o tópico "sp_defaultdb" nos Manuais Online do SQL Server.
  • Durante uma transferência de logons entre instâncias do SQL Servidor, se a ordem de classificação do servidor de origem diferencia maiúsculas de minúsculas e a classificação ordem do servidor de destino é diferencia maiúsculas de minúsculas, você deve inserir todos caracteres alfabéticos em senhas como caracteres maiúsculos após a transferência de logons para o servidor de destino. Se a ordem de classificação do servidor de origem diferencia maiúsculas de minúsculas e a ordem de classificação do servidor de destino é maiúsculas e minúsculas, não será possível fazer logon com os logins transferidos usando o procedimento descrito neste artigo, a menos que a senha original contém caracteres não alfabéticos ou a menos que todos os caracteres alfabéticos a senha original são caracteres maiúsculos. Se ambos os servidores diferencia maiúsculas de minúsculas ou ambos os servidores diferenciam maiúsculas de minúsculas, você não terá Esse problema. Este é um efeito colateral da maneira que trata do SQL Server senhas. Para obter mais informações, consulte o "efeito em senhas de alterar classificação Tópico de pedidos"nos Manuais Online do SQL Server 7.0.
  • Quando você executa a saída do script sp_help_revlogin no servidor de destino, se o servidor de destino já tiver um login definido com o mesmo nome de um dos logons na saída do script, você poderá ver o Erro durante a execução da saída do script sp_help_revlogin a seguir:
    Servidor: Msg 15025, Nível 16, estado 1, procedimento sp_addlogin, linha 56
    O logon 'test1' já existe.
    Da mesma forma, se existe um logon diferente com o mesmo valor de SID neste servidor, como você está tentando adicionar, você recebe a seguinte mensagem de erro:
    Servidor: Msg 15433, Nível 16, estado 1, procedimento sp_addlogin, linha 93
    Fornecido o parâmetro @sid está em uso.
    Portanto, você deve cuidadosamente Examine a saída desses comandos, examinar o conteúdo da tabela sysxlogins e corrigir esses erros de maneira adequada.
  • O valor de SID para um logon específico é usado como base para implementar acesso em nível de banco de dados no SQL Server. Portanto, se o mesmo login tem dois valores diferentes para o SID no nível do banco de dados (em dois bancos de dados diferentes no servidor), o logon só terá acesso ao o banco de dados cujo SID corresponde ao valor no syslogins para esse logon. Essa situação pode ocorrer se os dois bancos de dados foram consolidados em questão de dois servidores diferentes. Para resolver esse problema problema, o logon em questão terá que ser removidos manualmente das banco de dados que tem uma incompatibilidade de SID usando o sp_dropuser procedimento armazenado e, em seguida, adicionado novamente usando o procedimento armazenado sp_adduser .

Propriedades

ID do artigo: 246133 - Última revisão: sexta-feira, 7 de junho de 2013 - Revisão: 9.0
A informação contida neste artigo aplica-se a:
  • Microsoft SQL Server 7.0 Standard Edition
  • Microsoft SQL Server 2000 Personal Edition
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 2000 Workgroup Edition
  • Microsoft SQL Server 2000 Developer Edition
  • Microsoft SQL Server 2000 Enterprise Edition
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Workgroup Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Enterprise Edition
Palavras-chave: 
kbsqlsetup kbhowtomaster kbinfo kbmt KB246133 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido pelo software de tradução automática da Microsoft e eventualmente pode ter sido editado pela Microsoft Community através da tecnologia Community Translation Framework (CTF) ou por um tradutor profissional. A Microsoft oferece artigos traduzidos automaticamente por software, por tradutores profissionais e editados pela comunidade para que você tenha acesso a todos os artigos de nossa Base de Conhecimento em diversos idiomas. No entanto, um artigo traduzido pode conter erros de vocabulário, sintaxe e/ou gramática. A Microsoft não é responsável por qualquer inexatidão, erro ou dano causado por qualquer tradução imprecisa do conteúdo ou por seu uso pelos nossos clientes.
Clique aqui para ver a versão em Inglês deste artigo: 246133

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com