从远程计算机连接到mssql服务器会导致用户登录失败

Bri*_*ndy 5 c++ sql sql-server

当我尝试使用此连接字符串连接到远程SQL服务器时出现此错误.

错误:

ODBC错误:28000118452 [Microsoft] [ODBC SQL Server驱动程序] [SQL Server]用户''登录失败.用户未与受信任的SQL Server连接关联.

连接字符串:

"DRIVER = {SQL Server}; SERVER = testserver,1433; Trusted_Connection = {Yes};"

请注意,如果我指定本地计算机,相同的连接字符串工作正常.

我的问题:为什么远程SQL服务器认为我的用户名是空白的''?

我首先使用WNetAddConnection Win32 API对远程计算机进行了有效登录.

编辑:从Management Studio连接时出现相同的错误.但是我认为我的程序有更高的工作机会,因为我首先建立了与远程机器的连接.

Edit2:注意我真的需要一个使用Windows身份验证的解决方案.我已经使用SQL身份验证了.

Moo*_*ose 1

想法:

\n\n

1.) 两台机器是否在同一个域中?我这么想可能是因为您提到与 WNet* 建立连接......

\n\n

如果没有,集成安全性会给您带来问题。

\n\n

编辑:我看到两台机器不在同一个域中。要使用集成安全性,SQL Server 所在的域必须信任您的本地计算机所在的域。

\n\n

另一个编辑:证实上述陈述。

\n\n

来自链接:\n 如果登录的用户是来自 SQL Server\xe2\x80\x99s 域的不同不受信任域的域帐户,则可能会出现此错误消息。下一步是将客户端计算机移至与 SQL Server 相同的域并将其设置为使用域帐户,或者在域之间建立相互信任。建立互信是一个复杂的过程,应该非常谨慎并考虑到安全问题。

\n\n

2.) 检查并确保服务器上的 SPN 设置正确。

\n\n

在这里查看更多指导,但基本上你会这样做:

\n\n

setspn -L 服务器名

\n\n

SPN 之一需要如下所示:

\n\n

MSSQLSvc/服务器名称:1433

\n\n

3.) 再次编辑: 如果两台机器都不在域中,您所需要做的就是拥有在两台机器上匹配的本地用户 ID/密码。

\n\n

例如,两台机器上都有一个名为 brian 的用户,两个用户的密码都是“letmein”。

\n