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?
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.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.