我正在尝试从 Windows SQL Server 2008 R2 的 powershell 运行 sql 查询。代码似乎无法通过 SQL Server 身份验证凭据来正确运行 sqlcmd。我直接从 powershell 运行第一部分,而不是作为脚本运行。
Set-Location SQLServer:\SQL\Server\
Invoke-sqlcmd "SELECT DB_NAME() AS hist;" -username "username" -password "p@ss"
我收到错误,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"
切勿对包含密码的变量使用双引号,因为会解释特殊字符(与包含特殊字符的用户名相同)。单引号字符串的情况并非如此。
例如,此密码将导致身份验证错误,因为对字符 $ 进行求值:
$pw = "p@ss$ord!"
但如果你使用单引号,它会起作用:
$pw = 'p@ss$ord!'
请注意,同样的原理也适用于命令行,因此这不起作用:
Invoke-Sqlcmd ... -Password "p@ss$ord!"
你应该写:
Invoke-Sqlcmd ... -Password 'p@ss$ord!'
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)