A autenticação do servidor SQL funciona num texto de ligação, mas falha no DSN

eu tenho um web site e estou tentando configurar um DSN em vez de usar uma cadeia de conexão porque parece mais seguro.

o seguinte texto de ligação funciona bem no meu site:

"Server=servername; database=mydb; user id= web.account; password=PassW0rd!; Integrated Security=SSPI"

No entanto, quando tento configurar um DSN (usando a administração odbc de 64 bits ), obtenho o seguinte erro:

Connection failed:
SQLState: '28000'
SQL Server Error: 18456
[Microsoft][ODBC SQL Server Driver][SQL Server]Login failed for user 'web.account'

Tenha em mente, eu estou usando a mesma conta e senha que eu uso na cadeia de conexão (que funciona). É estranho também porque o erro ocorre logo após eu clicar 'Next' no " How should SQL Server verify the authenticity of the login ID?" pagina.

parece que o administrador odbc nem sequer tenta ligar-se ao servidor para verificar as credenciais. O que posso verificar para provar isso / Como posso consertar isso?

coisas que eu tentei:

  • assinalei o modo de autenticação do servidor, como proposto noutras soluções , e que está configurado como "modo de autenticação do servidor SQL e do Windows", como deveria ser.
  • tentei criar tanto um utilizador como um sistema DSN - ambos têm o mesmo erro, isto parece mais uma prova de que não está a tentar ligar-se ao servidor para verificar as credenciais.
  • tentei a mesma criação DSN em vários servidores, todos têm o mesmo problema. É possível que o servidor SQL esteja recusando esses tipos de conexões?

actualizar 1: A DBA acabou de me dizer que a web.a conta é na verdade uma conta do Windows, não um SQL conta. Acho que é por isso que o odbc não está funcionando, porque ele não tenta se conectar como um usuário diferente do windows, apenas como o usuário atual do windows. Então agora a questão é, como eu configuro um DSN com uma conta windows diferente? Ou isso é possível?

Author: Community, 2014-12-23

2 answers

Este post tem uma resposta que diz que a configuração DSNs com autenticação NT é especificamente para todo o sistema, não uma conta específica, por isso um comando runas pode ser usado a partir do cmd, como por exemplo:

Runas /netonly / utilizador: domínio\web.conta "C:\Windows\SysWOW64\odbcad.exe "

Então ele vai pedir-lhe para a web.senha. Então você pode criar um DSN, e isso deve funcionar.

Actualização: tive de adicionar a web.Utilizador da conta no meu grupo de Administração usando Este belo how to . Depois, tive de passar o cmd como minha conta elevada. Depois executei o comando runas que mostrei acima. Então, eu finalmente foi capaz de criar um DSN não nativo, o que me permitiu conectar ao servidor de dados como um usuário diferente do Windows.

Ainda estou à espera que a DBA verifique os registos para dizer que isto funcionou ou não, mas sinto-me muito bem com isso. Será actualizado após a confirmação.
 1
Author: Travis Heeter, 2017-04-13 12:13:35

Tenta o seguinte:

Data Source=servername;Initial Catalog=mydn;Persist Security Info=True;User ID=web.account;Password=Passw0rd
Isto é o que eu uso para me ligar.
 -2
Author: Simon Campbell-Smith, 2014-12-23 14:11:37