我在 Powershell 中使用 Invoke-sqlcmd cmdlet 针对远程服务器运行保存在字符串中的 SQL 查询。
我已经包含了 credential 参数来请求域凭据以连接到 SQL 实例。
我已经在没有凭据参数的情况下对此进行了测试;而是以用户身份运行 Powershell 窗口,这可以正常工作,因此我确信用户的权限设置正确。
但是,我无法让它与凭据参数一起使用。
Import-Module -Name SqlServer -force
function Correct-Servername {
param(
[string] $dataSource = ".\SQL",
[string] $database = "MASTER",
[string] $sqlCommand = "sp_dropserver @@servername DECLARE @ServerName SQL_VARIANT = (SELECT serverproperty('Servername')), @SQLQuery NVARCHAR(4000); SET @SQLQuery = 'sp_addserver ''' + CONVERT(NVARCHAR(100), @SERVERNAME) + ''', ''LOCAL''' PRINT @SQLQuery EXECUTE sp_executesql @SQLQuery"
)
$cred = Get-Credential
Invoke-Sqlcmd -Query $sqlCommand -ServerInstance $dataSource -Database $database -Credential $cred
}
Correct-Servername | out-file -FilePath C:\Temp\correct_servername.log
这是我收到的错误:
cmdlet Get-Credential at command pipeline position 1
Supply values for the following parameters:
Credential
Invoke-Sqlcmd : Login failed for user 'domain\user'.
At C:\Temp\Rename-Create-Replication-2.ps1:20 char:2
+ Invoke-Sqlcmd -Query $sqlCommand -ServerInstance $dataSource -Dat ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [Invoke-Sqlcmd], SqlException
+ FullyQualifiedErrorId : SqlExceptionError,Microsoft.SqlServer.Management.PowerShell.GetScriptCommand
Invoke-Sqlcmd :
At C:\Temp\Rename-Create-Replication-2.ps1:20 char:2
+ Invoke-Sqlcmd -Query $sqlCommand -ServerInstance $dataSource -Dat ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ParserError: (:) [Invoke-Sqlcmd], ParserException
+ FullyQualifiedErrorId : ExecutionFailureException,Microsoft.SqlServer.Management.PowerShell.GetScriptCommand
任何帮助表示赞赏。