Não é possível abrir banco de dados padrão do usuário. Falha na autenticação. SQL 2005

StackOverflow https://stackoverflow.com/questions/176851

  •  05-07-2019
  •  | 
  •  

Pergunta

Tomei uma cópia de uma casa de banco de dados com me para que eu possa fazer alguns testes. No entanto, quando tento executar um procedimento armazenado eu recebo não pode banco de dados padrão do usuário aberta. Falha de logon ..

Eu verifiquei e verifiquei e verifiquei que posso abrir tabelas nos bancos de dados de login para estúdio sql gestão e acesso a padrão, bem como outros bancos de dados todas as idéias?

Possivelmente um usuário corrupto que era do SQL 2000 no trabalho a 2005 em casa

Foi útil?

Solução

Mudei 8 bancos de dados do SQL Server 2000 para SQL Server 2005 e para um computador totalmente diferente. I normalmente como para saber o que procedimentos armazenados estão fazendo isso eu cavei um pouco e descobriu que o comando real é ALTER USER .

É o que todo mundo vem dizendo. Os usuários se desassociado quando você desanexar e bancos de dados reconecte em SQL Server 2005. Eu acho esse comportamento mais irritante, como eu não ver que o comportamento no SQL Server 2000.

O T-SQL para corrigir esse problema parecido com este:

USE AdventureWorks;
ALTER USER Mary5 WITH NAME = Mary51;
GO

Este artigo MSDN fala um pouco mais sobre isso:

http://msdn.microsoft.com/en-us/library /ms176060.aspx

Outras dicas

EDIT: Minas foi de 2005 a 2005. Não tenho certeza se isso vai funcionar para o seu caso ...

Eu tive um problema semelhante. Para mim, quando eu separar ou criar um back-up e, em seguida, re-criar o banco de dados, ele vai perder conexão para os usuários. Usuário Eu tenho usado ainda está lá sob Entrada mas não seria suficiente para efetuar login.

No meu caso, eu era capaz de efetuar login, excluindo o usuário sob o banco de dados -> Segurança -.> Usuários, e não o usuário que está na lista de usuários do servidor sql root

Em seguida, ir para a raiz lista de usuários e mapeamento de banco de dados Reassign ou criar usuário, se não existe.

Espero que isso ajude.

Este é um tiro no escuro, então me perdoe se apenas desperdiça o seu tempo.

Outro cartaz mencionou que um determinado usuário tem um ID para o sistema e uma identificação para qualquer banco de dados. Isto pode ser comprovado por comparação de sid entre os master.sys.syslogins e dbname.sys.users para o mesmo nome de login / usuário. Se você restaurar um backup de outro servidor SQL que tem a sua própria cópia dos bancos de dados mestre, os SID não irá corresponder.

SQL Server 2005 não permite a edição direta de tabelas do sistema com um monte de dor. Para ajudar com estas partidas mis, eles adicionaram um procedimento armazenado para ajudá-lo a resolvê-los:

Use dbName GO

sp_change_users_login @ Action = 'Relatório'

Isso vai mostrar o que os usuários têm uma entrada dbName.sys.users, mas há master.sys.syslogins um -. Ou onde o nome existir em ambos, mas diferem por sids

Se isso mostra que o usuário está fora de sincronia, o procedimento também tem um modo de alterar a ligação:

Use dbName IR sp_change_users_login 'Update_One', 'userNameInDbUsers', 'UserNameInLogins'

Se o SID mis-match não é o seu problema, eu também vi coisas realmente screwy com o SQL Server 2005. O gui é especialmente buggy. Para corrigir um problema como este, eu tive que largar na verdade a entrada syslogins (através do GUI ou comando DROP LOGIN)

sp_change_users_login: http://msdn.microsoft. com / en-us / library / ms174378 (SQL.90) .aspx

Gota Acesso de sintaxe: http: // MSDN. microsoft.com/en-us/library/ms188012(SQL.90).aspx

Eu tive o mesmo problema e eu fixa-lo com:

C:\> sqlcmd -E -d master
1> ALTER LOGIN ***** WITH DEFAULT_DATABASE=master
2> GO

Onde ***** é seu nome de usuário.

(Se você estiver usando um nome de usuário de domínio: [*****])

Editar:

Onde ***** poderia ser:

  • username se o usuário é local
  • [username] se o usuário pertence ao domínio real
  • [domain\username] se o usuário pertence a outro domínio (não testado)

Eu só resolveu este problema. Meu banco de dados padrão foi AdventureWorks2008, assim como um administrador, acabei retirando o meu login do servidor. Em seguida, executar o seguinte para recriar meu usuário

CREATE LOGIN [NT\mylogin] FROM WINDOWS WITH DEFAULT_DATABASE=[Master], DEFAULT_LANGUAGE=[us_english]
GO

O meu entendimento é que Logins são armazenados no servidor, enquanto um usuário é uma atribuição de um login para um banco de dados (me corrija se eu estiver errado).

Portanto, você não pode mover Logins destacando / anexando bancos de dados, e a solução seria criar um usuário de banco de dados conectando um login (válido) ao banco de dados copiados.

ALTER LOGIN funciona apenas no SQL 2005 e para cima.

Para alterar o banco de dados padrão para um usuário em 2000 utilização

EXEC master.dbo.sp_defaultdb @loginname = N'BuiltIn\Administrators', @defdb = N'master'

Descobri isso da maneira mais difícil quando eu definir o BUILTIN \ Administradores conta como padrão para o db aplicativo e ele ficou offline de alguma forma e eu não podia mais login. Usando Management Studio, você pode definir a opção para acessar mestre, mas você deve executar o comando acima, antes de qualquer outra operação vai funcionar, a menos que você obtenha o banco de dados padrão é erro indisponíveis.

Como foi mencionado anteriormente, o mapeamento de logon para essa conta de usuário, provavelmente, tornou-se dissociado durante o movimento. Ou, você moveu-lo sem criar as credenciais que estava esperando, nesse caso, você precisa para criar o login primeiro ...

Se fosse um conjunto de backup e você está restaurando-lo, no entanto, não há nenhuma maneira (que eu saiba) para associar novamente o login para o usuário através da interface de gerenciamento. Em vez disso, você tem que usar:

exec sp_change_users_login update_one, 'user', 'login'

para obtê-lo para restaurar a ligação.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top