gpt4 book ai didi

sql-server - sqlcmd/Invoke-SqlCmd 中的转义变量

转载 作者:可可西里 更新时间:2023-11-01 13:53:21 25 4
gpt4 key购买 nike

我正在使用 powershell 并使用 Invoke-SqlCmd .我能够将变量传递给 SQL:

$variables = @( "MyVariable='hello'" )

Invoke-SqlCmd `
-ServerInstance 'localhost' `
-Database 'master' `
-Username 'matthew' `
-Password 'qwerty' `
-Query 'SELECT $(MyVariable) AS foo' `
-Variable $variables

这会按预期返回 hello。但是,如果我有一个变量,其值包含一个等号 (=):

$variables = @("MyVariable='aGVsbG8NCg=='") # base64 encoded 'hello'

它给我以下错误:

The format used to define the new variable for Invoke-Sqlcmd cmdlet is invalid. Please use the 'var=value' format for defining a new variable.

我找不到关于 sqlcmdInvoke-SqlCmd 的任何关于如何正确转义值的文档。

如何转义发送到 sqlcmd/Invoke-SqlCmd 的变量?

最佳答案

在对

进行一些反射(reflection)后进行调查

C:\Program Files (x86)\Microsoft SQL Server\120\Tools\PowerShell\Modules\SQLPS\Microsoft.SqlServer.Management.PSSnapins.dll

查看ExecutionProcessor的构造函数,以下几行揭示了如果变量定义中有多个等号就会失败的问题。

我对尝试使用 Invoke-SqlCmd 的其他人的建议是节省您的时间和理智,并且只使用开源替代品 Invoke-SqlCmd2相反。

Microsoft,请修复。

关于sql-server - sqlcmd/Invoke-SqlCmd 中的转义变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35157090/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com