Inícios de sessão do utilizador e permissões numa base de dados podem estar incorrectas depois de restaurado a base de dados

Traduções de Artigos Traduções de Artigos
Artigo: 168001 - Ver produtos para os quais este artigo se aplica.
Expandir tudo | Reduzir tudo

Sintomas

Se uma cópia de uma base de dados de utilizador do SQL Server é restaurada para um servidor de SQL diferente (tal como um servidor de cópia de segurança quente) ou para o SQL Server mesmo após a reconstruir ou recarregar uma versão antiga da base de dados principal, inícios de sessão do utilizador e permissões sobre a base de dados podem estar incorrectas.

Este problema poderá revelar-se de várias formas:
  • Ao iniciar sessão num servidor 6.x, os utilizadores podem receber o seguinte erro:
    Msg 4002, nível 14, 1, estado do servidor Microsoft SQL Server, linha 0
    Início de sessão falhou
    Biblioteca de base de dados: Início sessão incorrecto.
  • Ao iniciar sessão num servidor 7.0, os utilizadores podem receber o seguinte erro:
    Msg 18456, 14, estado 1, nível
    Falhou o início de sessão para o utilizador '% ls'.
  • Ao tentar aceder a objectos na base de dados, os utilizadores podem receber o erro seguinte:
    Msg 229, nível 14, State 1
    %s permissão negada no objecto %. * s, base de dados %. * s, %.*s proprietário
  • Ao tentar criar um início de sessão e conceder acesso à base de dados restaurado ou adicionar o utilizador à base de dados, poderá receber o seguinte erro:
    Microsoft SQL-DMO (SQLState ODBC: 42000) erro 15023: utilizador ou função '% s' já existe na base de dados actual.
  • Utilizadores poderão ter as permissões em objectos para os quais que anteriormente não.

Causa

Informações de início de sessão do utilizador são armazenadas na tabela syslogins na base de dados principal. Alterando servidores, ou alterar estas informações por recriar ou restaurar uma versão antiga da base de dados principal, as informações podem ser diferentes do que a informação da base de dados de utilizador foi criada. Se não existirem inícios de sessão para os utilizadores, receberão um erro indicando "O início de sessão falhou" ao tentar iniciar sessão servidor. Se existem inícios de sessão do utilizador, mas o SUID valores (por 6.x) ou valores de SID (para 7.0) no modelo globaldiferem syslogins e a tabela sysusers na base de dados de utilizador, os utilizadores podem ter permissões diferentes diferente da esperada da base de dados de utilizador.

Nota Se estiver a utilizar o Microsoft SQL Server 2005, a tabela syslogins e a tabela sysusers são implementados como vistas de compatibilidade. Estas vistas são sys.syslogins e sys.sysusers . Para obter mais informações sobre vistas de compatibilidade, consulte o tópico "Compatibilidade vistas (Transact-SQL)" no SQL Server 2005 Books Online.

Como contornar

Para contornar este problema, execute um dos seguintes procedimentos:
  • Se estiverem disponíveis para adicionar os inícios de sessão, utilizadores e permissões scripts actuais, largar e recriá-las a partir de scripts. Para obter exemplos da utilização de scripts para transferir os inícios de sessão entre servidores, consulte o seguinte artigo base de dados de conhecimento da Microsoft:
    246133COMO: Transferir inícios de sessão e palavras-passe entre instâncias do SQL Server
    240872Como resolver problemas de permissões quando uma base de dados for movido entre o SQL Server
  • Pode utilizar o procedimento armazenado sp_change_users_login para reassociate relações entre tabelas syslogins sysusers e sysalternates. No entanto, o procedimento torna melhores estimativas em ligações e pode permitir um utilizador com privilégios de acesso mais do que se destina. Executar o procedimento com a opção de relatório primeiro irá gerar uma lista de utilizadores que serão alterados. Posteriormente, deverá verificar para garantir que os utilizadores afectados têm as permissões adequadas. Além disso, ser ciente de que o procedimento sp_change_users_login não corrige problemas de permissão derivados de inícios de sessão e os utilizadores criados numa ordem diferente na base de dados onde a cópia de segurança é restaurada.
  • Restaure uma cópia da base de dados principal desde a hora da informação da base de dados de utilizador para o servidor antes de carregar a base de dados de utilizador. Este procedimento garante que todas as informações de utilizador da base de dados de utilizador correspondem às correctamente com a tabela syslogins no modelo global.

    aviso : A base de dados principal contém informações de todo o servidor e afecta todas as bases de dados do servidor. Ao restaurar a base de dados principal, poderá encontrar o ID de utilizador adicionais e/ou bases de dados que sejam perdidas ou que tenham permissões incorrectas. Quaisquer alterações ao modelo global de que ocorreram desde a altura da cópia de segurança serão perdidas. Utilize este método apenas se tiver a certeza de que a versão de cópia de segurança da base de dados principal contém informações correctas para a base de dados de utilizador em questão e todas as outras bases de dados no servidor.
  • Transferência de utilização Gestor (por 6.x) ou DTS (para 7.0) para copiar os inícios de sessão. Tenha em atenção que as palavras-passe não será transferido utilizando este método.
  • Contacte o fornecedor de suporte principal.

Propriedades

Artigo: 168001 - Última revisão: 28 de março de 2006 - Revisão: 5.3
A informação contida neste artigo aplica-se a:
  • Microsoft SQL Server 6.0 Standard Edition
  • Microsoft SQL Server 6.5 Standard Edition
  • Microsoft SQL Server 7.0 Standard Edition
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL 2005 Server Enterprise
  • Microsoft SQL Server 2005 Express Edition
  • Microsoft SQL 2005 Server Workgroup
Palavras-chave: 
kbmt kbprb kbusage KB168001 KbMtpt
Tradução automática
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: 168001

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