it-swarm-pt.tech

"Não é possível abrir o banco de dados padrão do usuário. O login falhou." depois de instalar o SQL Server Management Studio Express

Eu tenho um banco de dados em um arquivo local que é usado por um programa. O programa tem funcionalidade limitada e eu precisava executar algumas consultas rápidas. Instalei o SSMSE (SQL Server Management Studio Express 2005), conectei-me à instância do SQL Server, anexei o arquivo de banco de dados e executei as consultas. Agora o programa original não se conectará ao banco de dados. Eu recebo o erro:

Não é possível abrir banco de dados padrão do usuário. Falha na autenticação. Logon falhou para o usuário 'MyComputer\MyUserName'.

Eu voltei para o SSMSE e tentei definir o banco de dados padrão. Eu abri Segurança, Logins, BUILTIN\Administradores e BUILTIN\Users . Em Geral , configurei o banco de dados padrão para o banco de dados do programa. Em User Mappings , verifiquei se o banco de dados está marcado e que db_datareader e db_datawriter estão marcados.

O programa usa a string de conexão:

Servidor = (local)\Instância; AttachDbFilename = C:\PathToDatabase\Database.mdf; Segurança Integrada = Verdadeiro; Instância do usuário = True;

Eu sei tudo sobre administração de banco de dados. O que mais eu estou sentindo falta?

11
Hand-E-Food

Primeiro, tente isolar seu problema:

  1. Faça um backup do arquivo! Algumas das etapas abaixo podem, aparentemente, em algumas circunstâncias, fazer com que o arquivo desapareça.
  2. Você tem certeza de que está se conectando à mesma instância através do Management Studio como o programa está?
  3. Se possível, tente encerrar a instância que você não está esperando usar.
  4. Defina o banco de dados padrão do usuário como mestre e tente fazer o logon do programa.
  5. Tente fazer o login como usuário através do Management Studio - desde que você tenha segurança integrada, você deve abrir o Management Studio como o usuário do programa.
  6. Você está usando "instâncias do usuário" - talvez sem saber? Nesse caso, isso pode ser útil: http://blogs.msdn.com/b/sqlexpress/archive/2006/11/22/connecting-to-sql-express-user-instances-in-management-studio. aspx

Eu não trabalhei muito com arquivos sendo anexados da maneira que seu programa faz - mas você escreve que você anexou o DB no Management Studio também. Você já tentou desconectá-lo antes de executar seu programa? Talvez você esteja vendo o Management Studio e seu programa competindo pelo acesso exclusivo ao arquivo MDF?

EDIT: Eu adicionei o ponto 6 acima - isso é novo em minha própria lista de TODOs ao solucionar esse tipo de logon falhou. Mas parece muito com o que você está experimentando.

EDIT2: Na primeira edição, novo item foi adicionado à lista. Portanto, os números nos comentários não correspondem aos números da resposta.

6
user806549

Isso pode não estar respondendo sua pergunta especificamente, mas ajudará outras pessoas com problemas semelhantes.

O problema é que seu usuário é padronizado para um banco de dados que não é acessível por qualquer motivo (pode ser renomeado, removido, corrompido ou ...) Para resolver o problema basta seguir as instruções a seguir

  1. Tente fazer o login novamente na página de login, há outras abas, selecione "Propriedades da conexão".
  2. sob a guia, localize "Conectar ao banco de dados" e selecione um banco de dados existente ao qual você tenha acesso, como tempdb ou master
  3. Quando estiver conectado à Instância do SQL Server, execute o TSQL abaixo para atribuir ao login um novo banco de dados padrão.

    Use master
    GO
    
    ALTER LOGIN [yourloginname] WITH DEFAULT_DATABASE = TempDB
    GO
    

Como alternativa, uma vez conectado, altere o nome do banco de dados padrão para master via UI

Artigo retirado de: http://www.mytechmantra.com/LearnSQLServer/Fix-cannot-open-user-default-database-Login-failed-Login-failed-for-user-SQL-Server-Error/

6
Kiarash

Eu finalmente percebi isso, e minha situação é diferente de todas as outras sobre as quais eu li hoje à noite.

Eu tinha restaurado meu banco de dados de um backup. Eu sabia que havia um usuário de login em particular que eu estava usando, então criei esse usuário no SSMS. No entanto, já havia um usuário com esse nome no banco de dados que havia entrado com o backup.

Desde que eu tinha estragado tanto tentando corrigir isso, eu não era capaz de excluir o usuário no banco de dados facilmente. Eu apaguei o banco de dados e restaurei novamente. Então:

  1. Exclua o usuário nos Bancos de Dados -> [meu banco de dados] -> Usuários
  2. Crie o usuário novamente em Segurança-> Logins (não sob seu banco de dados, embora isso provavelmente funcione também).
  3. Vá para o usuário recém-criado. Selecione as propriedades. Em seguida, em Mapeamentos de usuários, informe para tornar seu banco de dados o padrão. Dê a ele acesso de leitura e gravação.

Resumo: Eu tive dois usuários. Um que veio com o DB e um que eu criei. Remova o que veio com o DB e crie o seu próprio.

2
DustinA

Esse problema se manifestou para mim quando eu coloquei meu db padrão offline. A próxima coisa que sei é que não consegui entrar. Alternar para a guia Propriedades da Conexão e selecionar a lista suspensa para alterar o banco de dados ao qual desejo se conectar também falharam.

Deixou-me entrar imediatamente depois que eu digitei manualmente o mestre como o banco de dados ao qual eu queria me conectar (na guia Propriedades da Conexão).

1
Mike Cheel

Primeiro clique no botão Opção >> do prompt “Conectar ao Servidor”.

Agora altere a conexão com o banco de dados para qualquer banco de dados existente em seu servidor, como master ou msdb.

Mais detalhes

https://blog.sqlauthority.com/2008/11/04/sql-server-fix-error-4064-cannot-open-user-default-database-login-failed-login-failed-for-user/

1
Sundar

Eu também tive esse mesmo problema, descobri que eu estava tentando acessar as classes de associação internas (em uma exibição) e que o .Net estava tentando criar o banco de dados na pasta App_Data:

@Membership.GetUser().ProviderUserKey

Isso acionará o sistema para tentar criar um banco de dados com base no sistema de associação interno, que pode não ser a maneira como o sistema é configurado.

0
Terry Kernan

Eu tive um problema semelhante, tive que simplesmente baixar o SQL Express Utility que é capaz de iniciar as instâncias do usuário. O SSEUtil é uma ferramenta escrita pela equipe do Visual Studio para ajudar a solucionar problemas de Instância do Usuário. Você pode ler mais sobre isso no arquivo leia-me instalado com o utilitário. http://www.Microsoft.com/downloads/details.aspx?FamilyID=fa87e828-173f-472e-a85c-27ed01cf6b02&DisplayLang=en .

Espero que isso ajude.

0
Benson Makoni

No meu caso eu tive que configurar o caminho certo para "conectar a qualquer banco de dados":

Na sua instância, vá para Security e, em seguida, para Logins.

Clique com o botão direito, você verá properties e deverá clicar em Securables.

Lá dá possibilidade de se conectar a qualquer banco de dados.

0
wookee80