使用 SQL 身份验证连接到域外的 SQL Server

使用 SQL 身份验证连接到域外的 SQL Server

我有一个 C# 应用程序,它通过 SQL 身份验证连接到 SQL 服务器,但要使用它的机器不在域中。

我已经尝试解决这个问题好几天了。在我的开发机器上,连接字符串工作正常,不是使用 Windows 身份验证。只要它位于域外的其他帐户之一上,包括我机器上的非域帐户,就会发生此错误。

登录失败。登录来自不受信任的域,无法与 Windows 身份验证一起使用。错误:18452

连接字符串是(为了便于阅读,省略并编辑了详细信息):

数据源=[服务器名称];

初始目录=[数据库];

持久安全信息=True;

用户ID=[用户名];

密码=[密码];

信任服务器证书=真;

我还尝试了其他字符串选项,例如 Trusted_Connection(尝试了真和假)和 Integrated Security=SSPI。

所有服务器连接设置均正确(允许远程连接、端口、允许 Windows 和 SQL 身份验证),并且我可以使用用户名和密码连接到 SSMS 上的服务器。

假设我的设置是正确的(肯定是哪里出了问题),如果我无法远程登录,这是否就失去了使用 SQL 用户登录的意义?无论如何,任何帮助都会得到感谢。

答案1

公平警告:我不是 C# 开发人员(在电视上也不扮演 C# 开发人员)。

错误消息坚持认为它正在尝试使用 Windows 身份验证,即使您没有这样做。(例如,“Integrated Security=SSPI”表示您正在使用 Windows 身份验证,“Trusted Connection”也是如此。)所以我想知道您遗漏的细节之一是否仅适用于 Windows 身份验证。

此 MSDN 链接仅用于 SQL 身份验证,可能会或可能不会帮助您。 此 MSDN 链接仅适用于 Windows 身份验证,可能会告诉您需要避免的选项。

答案2

事实证明,即使您使用 Visual Studio 向导使用某个连接字符串,VS 也不会更改对它的其他引用。代码和设置文件仍在使用旧的连接字符串。

我并不熟悉整个项目,因为我的任务只是对其进行修改,使其具有更多的功能。

因此,对于将来遇到同样问题但似乎找不到答案的其他人来说:

  • 如果所有服务器设置都正确,那么必须是你的代码。
  • 确保如果你通过以下方式引用项目中的连接字符串属性.设置.默认.连接字符串名称或者不是硬编码的连接字符串,它引用正确的连接字符串,并且完成后没有任何其他字符串。

如果版主想将其移至 StackOverflow,因为这实际上是一个代码问题,那么由你们决定。

相关内容