我正在使用以下代码在远程计算机上执行查询。
Invoke-Sqlcmd -ServerInstance $serverInstance -Database $dbName -InputFile $filePath -U "test" -P "testpwd"
但是收到像
这样的错误Invoke-Sqlcmd : Login failed. The login is from an untrusted domain and cannot be used with Windows authentication.
我的数据库服务器和我的机器在同一个域中,但两者都是不同的机构。 请帮忙。
答案 0 :(得分:0)
确保在您尝试访问的数据库服务器上启用了Windows身份验证和SQL身份验证。!
答案 1 :(得分:0)
首先,我假设您的$serverInstance
变量是一个对象,该对象以以下方式实例化:
$serverInstance = New-Object Microsoft.SqlServer.Management.Smo.Server($SQLInstanceName)
我相信,在您遇到此问题时,您正在使用IntegratedSecurity = true
(默认值)。您可以通过以下分配将其设置为false:
$serverInstance.ConnectionContext.LoginSecure=$false;
有关如何解决您遇到的错误的说明,请参见以下answer:
如果您的SQL Server在一个域控制器上,并且您试图 从另一个域控制器连接到它,然后您将得到此 发生错误时
IntegratedSecurity = true;
即使您包含有效的SQL Server用户名和 连接字符串中的密码,因为它们将自动 用您的Windows登录名和密码覆盖。综合安全 意味着简单-使用Windows凭据进行登录验证即可 SQL Server。因此,如果您登录到其他域控制器 那么它将失败。如果您在两个不同的域中 控制器,那么您别无选择,只能使用
IntegratedSecurity = false;
现在,如果集成安全性为假,则SQL Server将使用SQL 连接字符串中提供的服务器登录名和密码。为了这 要正常工作,SQL Server实例必须具有其身份验证模式 配置为混合模式,即SQL Server和Windows身份验证 模式。
要在SQL Server中验证或更改此设置,可以打开SQL Server Management Studio,右键单击您的服务器名称,然后 选择属性。在出现的弹出窗口中,选择“安全性”,然后您 会在需要时看到在何处更改此设置。