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

0

Eu escrevi um aplicativo de teste simples em C # (4.5) que não faz nada além de conectar-se a um banco de dados e exibir uma mensagem. (Basicamente apenas para testar a implantação e conexão com o banco de dados.) Na minha estação de trabalho local, tudo funciona bem. Eu instalei o SQL Express 2012, conecte como o usuário atual (segurança integrada), sem problemas.

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

No servidor, segui a mesma instalação para o SQL Express 2012. Estou conectado como administrador quando executo o aplicativo de console. Eu até tentei ativar a autenticação de modo misto, criar um usuário e me conectar como esse usuário. Eu posso conectar no SQL Management Studio, mas o aplicativo sempre recebe um erro de login com falha.

Existe alguma configuração de segurança oculta no Windows Server 2008 que eu 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): Cannot open database "TestDatabase" requested by the login. The login failed. Login failed for user 'sa'.

Naturalmente, esta é a versão do erro quando tentei me conectar como sa como uma espécie de último esforço para testes. O mesmo erro acontece para TestUser (um usuário SQL que eu criei para isso), bem como PERSONALSERVER\Administrator (o usuário logado atual executando o aplicativo).

As strings de conexão que eu 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
por David 12.11.2012 / 15:28

1 resposta

1

Primeiro, nunca vi uma instância do SQL Express usar o ano. Normalmente é sempre localhost \ SqlExpress

No gerenciador de configuração, certifique-se de que o TCP / IP e os Pipes nomeados estejam ativados.

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

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

Conecte-se por meio do endereço IP em vez do nome do computador (isso significa também atualizar sua string de conexão - detalhes sobre como na parte inferior desta postagem).

Por fim, atualize sua string de conexão para

Data Source=.\sqlexpress2012; Initial Catalog=TestDatabase; Integrated Security=SSPI; User ID=myDomain\myUsername; Password=myPassword;

ou experimente com:

Server=.\sqlexpress2012; Database=TestDatabase; Trusted_Connection=True;

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

Verifique se as portas SQL, normalmente 1433 e 1434, estão abertas.

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

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

    
por 12.11.2012 / 15:49