我正在尝试从域外连接到 SQL 服务器。
我有以下连接字符串:
SqlConnection("SERVER=Server;DATABASE=Database;User ID=Domain\User;Password=password");
当我尝试在域外使用它时会失败,因为它会尝试使用 SQL 身份验证登录。
有什么方法可以将命令传递到字符串中以使用 Active Directory 身份验证。
还有哪些其他方法可以使用域外的事件目录详细信息连接到 SQL 服务器?
最佳答案
您要么需要:
- 在您的连接字符串中使用 Integrated Security,并在您的资源域(SQL Server 所在的位置)和您的帐户域(帐户所在的位置)之间创建域信任关系。或者……
- 在 SQL Server 中创建一个帐户,并在您的连接字符串中使用该帐户作为用户名和密码。
您通过将域凭据放入用户/密码来进行无效混合,甚至没有信任关系。
编辑:
评论表明需要将 SQL 帐户与 AD 信用同步。这不是必需的。 sql 帐户只是 SQL 范围内的用户名和密码,它特定于 SQL Server,与域信用无关。如果您使用 SQL 帐户,那么这些将成为您应用程序中的配置设置,用于构建正确的连接并通过网络发送。 SQL 服务器在不涉及 AD 的情况下在本地验证这些凭据。
创建 2 层(胖客户端直接访问 sql)或 3 层(客户端访问访问 sql 的中间层应用服务器)也很有趣。如果是后者,您的应用程序将对用户进行身份验证和授权,然后,它使用带有 sql 特定用户/密码的配置设置来访问 sql。如果它是前者并且您使用的是 sql 帐户,那么您需要每个客户端一个,这是一个问题。
关于c# - 使用域外的 AD 登录详细信息验证 SQL 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16035284/