gpt4 book ai didi

sql-server - 在 Powershell 中使用 Invoke-SqlCmd 使用 $( 插入字符串时出错

转载 作者:行者123 更新时间:2023-12-03 00:46:55 24 4
gpt4 key购买 nike

设置:

CREATE TABLE MyTest (TestCol1 nchar(5))

测试:

以下工作:

Invoke-Sqlcmd -Database "databasename" -ServerInstance "hostname" -OutputSqlErrors $True -Query "INSERT INTO MyTest VALUES ('`$5')"
Invoke-Sqlcmd -Database "databasename" -ServerInstance "hostname" -OutputSqlErrors $True -Query "INSERT INTO MyTest VALUES ('(5')"

以下失败并出现以下错误:

Invoke-Sqlcmd -Database "databasename" -ServerInstance "hostname" -OutputSqlErrors $True -Query "INSERT INTO MyTest VALUES ('`$(5')"
Invoke-Sqlcmd -Database "databasename" -ServerInstance "hostname" -OutputSqlErrors $True -Query "INSERT INTO MyTest VALUES ('`$`(5')"

错误:调用 Sqlcmd :行:1 字符:1+ Invoke-Sqlcmd -Database "databasename"-ServerInstance "hostname"-Ou ...+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : ParserError: (:) [Invoke-Sqlcmd], ParserException + FullQualifiedErrorId:ExecutionFailureException,Microsoft.SqlServer.Management.PowerShell.GetScriptCommand

经过一番研究,我发现 $( 在 powershell 中提供功能,因此被保留。但是我尝试转义括号,但没有成功。我尝试寻找替代方案。关于如何做到这一点的任何想法?如果我使用 CHAR SQL Server 中的函数可以工作,但在我的代码中处理起来会很痛苦。谢谢。

最佳答案

您需要做的就是通过添加-DisableVariables来禁用invoke-Sqlcmd中的变量查找。$() 用于将变量传入sql语句。

Invoke-Sqlcmd -InputFile $fileName -ServerInstance $serverInstance -DisableVariables

来源http://msdn.microsoft.com/en-us/library/cc281720.aspx

关于sql-server - 在 Powershell 中使用 Invoke-SqlCmd 使用 $( 插入字符串时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15580003/

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