O login do SQL falha no aplicativo, mas não no SSMS

O login do SQL falha no aplicativo, mas não no SSMS

Escrevi um aplicativo de teste simples em C# (4.5) que nada mais faz do que conectar-se a um banco de dados e exibir uma mensagem. (Basicamente, apenas para testar a implantação e a conexão do banco de dados.) Na minha estação de trabalho local, tudo funciona bem. Instalei o SQL Express 2012, conectei-me como usuário atual (segurança integrada), sem problemas.

No entanto, quando implantado no Windows Server 2008, o aplicativo não consegue se conectar ao banco de dados. Ele continua recebendo um erro de falha de login.

No servidor segui a mesma instalação do SQL Express 2012. Estou logado como Administrador quando executo o aplicativo de console. Até tentei ativar a autenticação de modo misto, criar um usuário e conectar-me como esse usuário. Posso me conectar no SQL Management Studio, mas o aplicativo sempre recebe um erro de falha de login.

Existe alguma configuração de segurança oculta no Windows Server 2008 que preciso modificar para permitir que um aplicativo .NET se conecte a um servidor SQL? O que pode causar esse comportamento em que posso fazer login no banco de dados via SSMS, mas não por meio de um aplicativo?

Erro:

System.Data.SqlClient.SqlException (0x80131904): Não é possível abrir o banco de dados "TestDatabase" solicitado pelo login. O login falhou. Falha no login do usuário 'sa'.

Naturalmente, esta é a versão do erro quando tentei conectar como sauma espécie de último esforço para teste. O mesmo erro acontece para TestUser(um usuário SQL que criei para isso) e também para PERSONALSERVER\Administrator(o usuário conectado no momento que está executando o aplicativo).

As strings de conexão que tentei são:

  • Data Source=localhost\sqlexpress2012;Initial Catalog=TestDatabase;Integrated Security=True
  • Data Source=localhost\sqlexpress2012;Initial Catalog=TestDatabase;User Id=TestUser;Password=testpassword

Responder1

No gerenciador de configuração, certifique-se de que TCP/IP e Named Pipes estejam habilitados.

No painel de controle, tente criar uma conexão SQL com o driver do SQL Server (em Ferramentas administrativas) -> Fontes de dados, pois isso apenas testará uma conexão local com muito poucas variáveis ​​(por exemplo, seu código (que tenho certeza que está escrito perfeitamente :)))

Além disso, você tem dois locais onde está referenciando sua string de conexão (eu fiz isso); ele foi salvo em meu arquivo app.config e como uma string em meu código (ou até mesmo uma string de recurso).

Conecte-se via endereço IP em vez do nome do computador (isso significa atualizar também sua string de conexão - detalhes sobre como no final desta postagem).

Por último, atualize sua string de conexão para

Fonte de dados=.\sqlexpress2012; Catálogo Inicial=TestDatabase; Segurança Integrada=SSPI; ID do usuário=meuDomínio\meuNomeUsuário; Senha=minhaSenha;

ou experimente com:

Servidor=.\sqlexpress2012; Banco de dados=TestDatabase; Trusted_Connection=Verdadeiro;

Presumirei que o usuário tenha direitos eficientes para o banco de dados em questão. :)

Certifique-se de que as portas SQL, normalmente 1433 e 1434, estejam abertas.

Faça logon no SSMS com o nome de usuário/senha para garantir que eles tenham permissões.

www.ConnectionStrings.com- Ótimo recurso para strings de conexão! :)

informação relacionada