Como resolver problemas de permissões quando move uma base de dados entre servidores que executam o SQL Server

Extended support for SQL Server 2005 ended on April 12, 2016

If you are still running SQL Server 2005, you will no longer receive security updates and technical support. We recommend upgrading to SQL Server 2014 and Azure SQL Database to achieve breakthrough performance, maintain security and compliance, and optimize your data platform infrastructure. Learn more about the options for upgrading from SQL Server 2005 to a supported version here.

IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática… erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.

Clique aqui para ver a versão em Inglês deste artigo: 240872
Sumário
Este artigo descreve como mapear inícios de sessão padrão e integrados para resolver problemas de permissões quando move uma base de dados entre servidores que executam o SQL Server.
Mais Informação
Quando move uma base de dados de um servidor que esteja a executar o SQL Server para outro servidor com o SQL Server, poderá ocorrer um erro de correspondência entre os números de identificação de segurança (SID) de inícios de sessão na base de dados principal e os utilizadores da base de dados do utilizador . Por predefinição, o SQL Server 7.0, SQL Server 2000 e SQL Server 2005 fornecem o procedimento armazenado do sistema de sp_change_users_login para mapear estes utilizadores sem correspondência. No entanto, só pode utilizar o procedimento armazenado sp_change_users_login para mapear os inícios de sessão do SQL Server padrão e tem de efectuar estes mapeamento para um utilizador de cada vez. Para mais informações sobre o procedimento armazenado sp_change_users_login , consulte o tópico "sp_change_users_login" no SQL Server 7.0, SQL Server 2000 e SQL Server 2005 Books Online.

No SQL Server 7.0 ou versões posteriores, pode manter o mapeamento entre os logins de base de dados principal e os utilizadores da base de dados do utilizador , utilizando os SID. Este mapeamento é necessário para manter as permissões correctas para os inícios de sessão nas bases de dados do utilizador . Quando este mapeamento é perdido, os inícios de sessão têm problemas de permissões que incluem, mas que não estão limitados à seguinte:
  • Se o início de sessão do SQL Server não existe no novo servidor e o utilizador tenta iniciar sessão, o utilizador poderá receber a seguinte errormessage:
    Servidor: Erro 18456, nível 16, indicar 1
    Loginfailed de utilizador '%ls'.
  • Se o início de sessão do SQL Server existente no novo servidor, mas theSID na base de dados principal é diferente do SID na base de dados de utilizador , o utilizador pode iniciar sessão no SQL Server com êxito; no entanto, quando o utilizador tenta aceder a essa base de dados, o utilizador poderá receber mensagem de erro thefollowing:
    Servidor: Erro 916 nível 14, State1, Linha1
    Utilizador do servidor ' %. * ls' não é um utilizador válido na base de dados ' %. * ls'.
    Nota No SQL Server 2005, o utilizador poderá receber a mensagem de erro thefollowing:

    Utilizador de servidor '%s' não é um utilizador válido na base de dados '%s'. Adicione a conta de utilizador na base de dados pela primeira vez.
Para mais informações sobre o modelo de segurança do SQL Server 7.0, consulte a documentação técnica de "Microsoft SQL Server 7.0 segurança". Para visualizar a documentação técnica, visite o seguinte Web site da Microsoft:Para mais informações sobre o modelo de segurança do SQL Server 2000, clique no número de artigo seguinte para visualizar o artigo na Microsoft Knowledge Base:
322712 Funcionalidades de segurança do Microsoft SQL Server 2000 S322712 e os procedimentos recomendados

Restrições

  • Se existirem utilizadores na tabela sysusers sem um prefixo de nome do computador ou os objectos de própria de namethat de domínio e estes objectos são referenciadas nas aplicações utilizando o nome de duas partesnome de utilizador.NomeObjecto, theapplication poderá quebrar uma vez que o procedimento armazenado sp_sidmap muda o nome a estes utilizadores com o prefixo de nome de domínio ou nome de thecomputer tal como aparece na tabela sysxlogins . Para contornar este problema, após o sp_sidmap procedimento armazenado é concluído, mudar o nome de utilizadores que foram afectados na tabela sysusers para os respectivos nomes antigos ou contacte a supportprovider primária.
  • Este artigo não considera os aliases. Mustmanage os aliases manualmente.
  • Se um início de sessão padrão do SQL Server não existe no servidor de newSQL, pode adicionar o início de sessão com uma palavra-passe nula. Pode ter tochange a palavra-passe para estes inícios de sessão em conformidade.
  • Se um utilizador tiver sido criado na base de dados de utilizador com um nome diferente da que aparece na tabela sysxlogins , é impossível saber o início de sessão correspondente para thatuser. Por conseguinte, antes de executar o sp_sidmap armazenadas procedimento:
    1. Transferir todos os objectos que este utilizador possui para uma base de dados de transição.
    2. Largue o utilizador, adicionar o utilizador que tem o nome correcto, e, em seguida, transferir novamente todos os objectos para este utilizador.
  • Se um utilizador não tem um início de sessão correspondente nem um ofeither de prefixo nome do computador local ou o nome de domínio, receberá um utilizador de forthis de mensagem. Esta mensagem indica que tem de adicionar primeiro o utilizador ao nível de danificar e, em seguida, adicioná-lo para o SQL Server como um início de sessão. Depois de efectuar este procedimento, tem de executar novamente o procedimento armazenado sp_sidmap .
  • Se um utilizador tem um prefixo de nome de domínio ou do Windows server nome de thelocal, mas não existe o início de sessão correspondente na tabela sysxlogins , o procedimento armazenado tenta adicioná-lo como um toSQL de início de sessão de novo servidor. Se o utilizador do Windows não existir, ele gera um messagein de saída da janela de resultados e, em seguida, manualmente cria o início de sessão depois primeiro utilizador do Windows addsthe.
  • Se existir mais do que um início de sessão para um utilizador na tabela sysusers , verá uma mensagem no ficheiro de resultados e listsall os inícios de sessão que tenham o mesmo nome de utilizador de saída. Neste ponto, tem de manuallyintervene para se certificar de que o utilizador corresponde ao início de único sessão.

    Exemplo Se a tabela de sysusers tem um utilizador chamado "JoãoSilva" e a tabela de sysxlogins tem inícios de sessão com nomes como "Test\johndoe" e "Test2\johndoe", quando executar o procedimento armazenado, recebe uma thatstates de mensagem que um dos utilizadores tem mais do que um início de sessão e que o SystemAdministrator tem de escolher um. Esta é a única vez que youmust a executar o segundo procedimento armazenado, sp_prefix_sysusersname, que é fornecido neste artigo. Além disso, esta situationis descritos em pormenor no ficheiro Readme. txt.

Mapear inícios de sessão padrão e integrados

Depois de mover uma base de dados de um servidor que esteja a executar o servidor de SQL Server para outro servidor com o servidor de SQL server, siga estes passos para uma intervenção mínima do utilizador:

SQL Server 7.0 e SQL Server 2000

  1. Certifique-se de que existe um início de sessão na tabela sysxlogins na base de dados principal para cada utilizador na tabela sysusers da base de dados.

    Nota Para adicionar um início de sessão padrão do SQL Server, consulte o topicin de "sp_addlogin" SQL Server Books Online. Para adicionar um início de sessão integrado do SQL Server, consulte o tópico "sp_grantlogin" no SQL Server Books Online.
  2. Transferir o ficheiro MapSids.exe e, em seguida, extraia theSp_sidmap.sql e os ficheiros Leiame. txt.
  3. Inicie sessão para o servidor que está a executar o SQL Server como um systemadministrator e, em seguida, execute o ficheiro de Sp_sidmap.sql da base de dados do utilizador. Executar o ficheiro Sp_sidmap.sql exe cria os dois procedimentos armazenados, sp_sidmap e sp_prefix_sysusersname.
  4. Certifique-se de que a base de dados não é acedida por qualquer otheruser daquele que está a executar os procedimentos armazenados.
  5. Certifique-se de que o analisador de consultas apresenta resultados no textformat e não no formato de grelha. Para tal, premir oCTRL ^ T chaves, ou clique em consultae, em seguida, clique em resultados em formato de texto. Esta é veryimportant para que possa ver os resultados e a janela de inone de mensagens informativas e guardar a saída para um ficheiro de texto. Poderá ser necessário laterto este ficheiro resolver alguns mapeamentos.
  6. Porque não consegue verificar se o parametersare transmitido correctamente, certifique-se para as passar correctamente para o procedimento armazenado sp_sidmap :
    EXEC sp_SidMap @old_domain = old_domain_name,@new_domain = new_domain_name,@old_server = old_server_name,@new_server = new_server_name
    Substitua os valores para os nomes de domínio antigo e novo e namesappropriately do servidor.
  7. Guardar os resultados num ficheiro e siga a que as direcções são fornecida no ficheiro Readme. txt.

    Nota Quando executar estes procedimentos armazenados, a tabela de sysusers é a única tabela alterações na base de dados. Para returnto um Estado onde começou, restaure a base de dados da cópia de segurança ou reattachthe.

SQL Server 2005

Se estiver a executar o SQL Server 2005, utilize a cláusula de Com início de sessão da instrução ALTER USER para remapear um utilizador a um novo início de sessão. Para mais informações, visite o seguinte Web site da Microsoft Developer Network (MSDN):Nota Para utilizar a cláusula de Com início de sessão da instrução ALTER USER , tem de aplicar o SQL Server 2005 Service Pack 2.
Referências
Para mais informações, clique nos números de artigo que se segue para visualizar os artigos na Microsoft Knowledge Base:
274188 Tópico "Resolução de problemas de utilizadores órfãs" no Books Online está incompleto
246133 Como transferir os inícios de sessão e palavras-passe entre instâncias do SQL Server
168001 Erros de início de sessão e/ou a permissão de utilizador depois de restaurar informações de estado
298897 EXEMPLO: Mapsids.exe ajuda-o SID de mapa entre bases de dados principal de utilizador e quando é movido a base de dados

Propriedades

ID do Artigo: 240872 - Última Revisão: 08/17/2015 02:20:00 - Revisão: 9.0

Microsoft SQL Server 2000 Standard Edition, Microsoft SQL Server 2000 64-bit Edition, Microsoft SQL Server 7.0 Standard Edition, Microsoft SQL Server 2005 Developer Edition, Microsoft SQL 2005 Server Enterprise, Microsoft SQL Server 2005 Express Edition, Microsoft SQL Server 2005 Standard Edition, Microsoft SQL 2005 Server Workgroup

  • kbsqlsetup kbhowtomaster kbmt KB240872 KbMtpt
Comentários