我的数据库客户端和数据库服务器位于不同的机器上,并且未连接到同一域(我的网络主机不支持此功能)。我不希望通过连接字符串发送用户名/密码详细信息,而是希望使用 Windows 身份验证连接到数据库。
在本文的概述中提到了这一点(重点是我的):
使用 Windows 身份验证连接到 SQL Server 时,可以使用 Kerberos 或 NTLM 身份验证,具体取决于服务器和域的配置。在以下情况下,您可能无法使用 Kerberos 身份验证:
您的数据库客户端和数据库服务器由防火墙隔开,从而阻止 Kerberos 身份验证。
您的应用程序服务器和数据库服务器位于彼此不信任的独立域中。
在这些情况下,您可以使用镜像本地帐户或 SQL 身份验证。使用镜像本地帐户,您可以在每台服务器上配置两个具有相同用户名和密码的帐户。您必须确保密码保持不变。
我假设这只是意味着在两台机器上创建一个具有相同用户名和密码的 Windows 用户,但我怀疑这是否可行。当我在数据库客户端上为该用户添加权限时,它会在用户名前加上服务器名称,在数据库服务器上创建数据库登录名时也会发生同样的事情。
这就是创建镜像本地帐户的意思吗?如果是这样,考虑到用户位于不同的域中,这如何工作?
答案1
您已经正确理解了该过程。您需要设置两个用户帐户。一个将在 SQL Server 主机上创建,另一个将在您要连接的客户端上创建。他们的用户名和密码应该相同。
SQL Server 使用主机名或域名作为用户名的前缀,但这不是问题,Windows 身份验证机制可以正确解析用户名部分,并且如果另一个用户的密码相同,则对另一个用户进行身份验证。