我正在尝试从powershell for Windows sql Server2008 R2运行SQL查询。代码似乎无法传递SQL Server身份验证凭据以正确运行sqlcmd。我直接从powershell运行这第一部分,而不是作为脚本。
Set-Location SQLServer:\SQL\Server\
Invoke-sqlcmd "SELECT DB_NAME() AS hist;" -username "username" -password "p@ss"I receive error,Login failed for user 'username'.代码格式的理想最终结果如下所示。同样的结果错误。
$path = "sqldbdump.csv"
$server = "serveronlocalhost"
$db = "hist"
$Query = @"
SELECT * From alarms;
"@
Invoke-Sqlcmd -ServerInstance $server -Database $db -Username $username -Password $pw -Query $Query | Export-CSV $path我也尝试过convert-tosecurestring -asplaintext,但没有成功。
$pw = convertto-securestring -AsPlainText -Force -String "p@ss"发布于 2016-08-25 19:37:28
永远不要对包含密码的变量使用双引号,因为会解释特殊字符(对于包含特殊字符的用户名也是如此)。单引号字符串的情况并非如此。
例如,此密码将导致身份验证错误,因为将计算字符$:
$pw = "p@ss$ord!"但是如果你使用单引号,它将会起作用:
$pw = 'p@ss$ord!'请注意,同样的原则也适用于命令行,所以这将不起作用:
Invoke-Sqlcmd ... -Password "p@ss$ord!"你应该这样写:
Invoke-Sqlcmd ... -Password 'p@ss$ord!'https://stackoverflow.com/questions/22335651
复制相似问题