0

我正在尝试连接到远程托管的服务器\实例。该服务器位于我也连接到的域中(我可以使用 SQL Server auth 并在本地使用 SSMS 提供的凭据登录)

Import-Module SQLPS

$query = 'select GETDATE() as date'

$op = invoke-Sqlcmd  -HostName 'servername' -Database  'DBName' -Username 'UN' -Password 'PWD' -Query "$query"

$op | Format-Table

预期产出为

2016-02-12 06:54:26.410

但我得到的是

PS SQLSERVER:> Import-Module SQLPS
$query = 'select GETDATE() as date'
$op = invoke-Sqlcmd -HostName 'servername' -Database 'DBName' -Username 'UN' -Password 'Pwd' -Query "$query " #-IgnoreProviderContext
$op | 格式表
警告:从模块“SQLPS”中导入的一些命令的名称包括未经批准的动词,可能会使它们不易被发现。要查找带有未批准动词的命令,请使用 Verbose 参数再次运行 Import-Module 命令。要获得批准的动词列表,请键入 Get-Verb。
invoke-Sqlcmd:用户“UN”登录失败。
在 line:3 char:7
+ $op = invoke-Sqlcmd -HostName 'servername' -Dat ...

+ CategoryInfo : InvalidOperation: (:) [Invoke-Sqlcmd],
SqlException + FullyQualifiedErrorId : SqlExectionError,Microsoft.SqlServer.Management.PowerShell.GetScriptCommand

invoke-Sqlcmd :
在第 3 行 char:7
+ $op = invoke-Sqlcmd -HostName 'servername' -Dat ...
+ ~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ParserError: (:) [Invoke-Sqlcmd],ParserException
+ FullyQualifiedErrorId:ExecutionFailureException,Microsoft.SqlServer.Management.PowerShell.GetScriptCommand

大家能帮我找出这是什么原因造成的吗?

我是否必须在任何地方指出这是 SQL Server 身份验证?

4

1 回答 1

0

所以我猜你需要使用 ServerInstance 参数而不是 HostName 参数。

Import-Module SQLPS

$query = 'select GETDATE() as date'

$op = invoke-Sqlcmd -ServerInstance 'servername' -Database 'DBName' -Username 'UN' -Password 'PWD' -Query "$query"

$op | Format-Table
于 2016-02-12T15:37:16.083 回答