Mensagem que o Visualizador do arquivo de log do SQL Server mostra:
Login failed for user [User]
Error: 18456, Severity: 14, State 38
O que realmente significa:
Failed to open the explicitly specified database
Minha pergunta:
Existe uma lista de todas as variações dos erros 18456 (falha no login), para cada combinação de gravidade e estado, com o texto de descrição útil?
Eu tive um Google, mas não consigo encontrar nada além de combinações específicas.
sql-server
errors
logins
Pete Oakey
fonte
fonte
Eu tive o mesmo erro com o código de estado 38 causado por um erro de digitação do nome do banco de dados na cadeia de conexão.
fonte
Aqui está o que eu encontrei quando resolvi esse erro: Eu havia criado algumas conexões SQL usando o login do Windows e não o nome de usuário e a senha. Não tenho certeza do que ou como aconteceu, mas aconteceu. Excluí-os e depois reconstruí meus modelos de entidade. Usei outra string de conexão que sabia ser boa, e tudo é alegria. A chave é Persist Security Info = True, que não funcionará em uma rede ou site externo
fonte
Eu tive 18456 com o estado 38 também. Aconteceu que a cadeia de conexão tinha 'segurança integrada = true', que não era o que eu queria. A cadeia de conexão continha o ID do usuário e a senha que deveriam ser usados. Quando mudei a configuração para false, tudo estava bem.
fonte
Eu recebi esse erro ao tentar fazer logon no SQL Server com várias instâncias. A cadeia de conexão não nomeou uma instância. Depois de nomear a instância (SERVERNAME \ INSTANCENAME), consegui conectar-me ao servidor.
fonte
@Pete Oakly está no caminho certo com a lista de códigos de estado. Especificamente, é neste código que estamos interessados:
Meu problema começou em um log de erro do C #:
Meus olhos estavam focados na parte "Falha no login" . Meu usuário era sa para este servidor de banco de dados. Como o logon poderia falhar?
Eu tropecei neste post por um trio de programadores que tinham a resposta: https://justaprogrammer.net/2012/12/09/a-misleading-sql-error-message-error-18456-severity-14-state-38 /
Não é o login que está falhando, é o banco de dados que estou tentando acessar. Isso não existe!
Bingo! Alterei o nome do banco de dados por outros motivos e não atualizei o arquivo de configuração. Corrigido o nome do banco de dados e as coisas estão funcionando como um encanto mais uma vez.
fonte
No nosso caso, no SQL Server Configuration Manager | Configuração de rede do SQL Server | TCP / IP IP A porta TCP NÃO foi configurada.
Sem isso, poderíamos estabelecer uma conexão ODBC e até usar uma conexão remota do SQL Management Studio e fazer login com o usuário. No entanto, cada vez que acessamos o URL do nosso aplicativo Tomcat, ele lançou uma conexão jdbc e identificamos no SQL Server o erro: Falha no logon para o usuário 'xxxx': motivo Falha ao abrir o banco de dados definido explícito, erro 18456, Severidade 14 Estado 38
Aqui um resumo da cadeia de conexão jdbc
Isso para dizer que também no SQL Server Network Configuration | Protocolos para <nome da instância> | As tubulações nomeadas devem ser ATIVADAS e o nome da tubulação
\\.\pipe\MSSQL$<instance name>\sql\query
deve ser definido corretamente.fonte
Bem, este é um erro relacionado à permissão do banco de dados. Estou adicionando minha solução nesta pergunta porque, é muito importante entender o papel do DBA. Então, aqui estão minhas sugestões:
Agora, faça o login com esse nome de usuário e você pode conceder acesso ao usuário. Para fazer isso:
Vá para Segurança , clique com o botão direito do mouse em Logins e selecione Novo Login
Na janela de login, você pode digitar o nome do usuário ou pesquisá-lo. Selecione o usuário na lista e clique em OK e OK novamente.
Na mesma janela de login, clique nas Funções do servidor e conceda o acesso ao usuário selecionado, como: sysadmin, serveradmin, decreator etc; clique OK .
Se você deseja conceder acesso a um banco de dados individual, acesse Mapeamento do Usuário e forneça o acesso conforme sua necessidade.
Verifique o status do banco de dados: Permissão: Grant Login: Enabled
Clique em OK
fonte