【发布时间】:2021-07-01 17:42:47
【问题描述】:
我目前正在尝试使用具有查询服务器权限的不同域/用户名连接到 SQL 服务器。这是powershell只是为了测试连接是否有效,
$connectionString = "Server=<my_server>;Database=<db>;User ID=<domain>\<testuser>;Password=<password>;Trusted_Connection=False;Encrypt=True;TrustServerCertificate=True;";
$connection = New-Object System.Data.SqlClient.SqlConnection($connectionString);
$connection.Open();
$connection.Close();
我最终得到了这个错误。
使用“0”参数调用“Open”的异常:“用户'
'登录失败。
我确定用户名和密码是正确的。因为那是客户端设置中的内容。
但我想知道是否需要将其他参数添加到连接字符串中?
【问题讨论】:
-
在连接字符串中包含用户 ID 和密码会导致它使用 SQL 登录身份验证,并且不适用于 Windows/域凭据。您需要在 PowerShell 中使用模拟来更改建立 SQL 连接的 Windows/域帐户(在连接字符串中使用
Integrated Security=true)。 -
您需要在所需的域帐户下运行 PS 脚本(例如使用 RUNAS)并在连接字符串中指定
Integrated Security=SSPI。 -
@DanGuzman 不幸的是,我需要查询数据库服务器的域帐户无法登录到我正在运行脚本的服务器。而且我的帐户无法登录数据库服务器。这是否意味着这项任务是不可能的,还是我错了?
-
@okmanl,如果您没有能力允许域帐户在本地登录,SQL身份验证会更容易。
-
使用 RunAs /netonly 启动 PowerShell,程序将以您当前登录的用户身份在您的本地计算机上执行,但与网络上其他计算机的任何连接都将使用指定的用户帐户进行.如果没有 /netonly,一切都将在指定的用户帐户下运行。
标签: sql-server database powershell sql-server-2012