【发布时间】:2026-02-24 17:50:01
【问题描述】:
我在一个名为 Test.sql 的文件中有以下内容:
SELECT '$(Val1)' AS [Value 1], '$(Val2)' AS [Value 2]
我正在尝试在 pwershell 提示符下运行以下命令:
Invoke-Sqlcmd -ServerInstance '.\SQLExpress' -Variable @("Val1='Test'","Val2='Test2'") -InputFile ".\SQL\Test.sql"
我得到错误:
Invoke-Sqlcmd:'' 附近的语法不正确。在行:1 字符:1 + 调用-Sqlcmd -ServerInstance '.\SQLExpress' -变量@("Val1='Test'","Val2='Te ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) [Invoke-Sqlcmd], SqlPowerShellSqlExecutionException + FullyQualifiedErrorId : SqlError,Microsoft.SqlServer.Management.PowerShell.GetScriptCommand
如果我将 Test.sql 中的 SQL 替换为:
SELECT @@VERSION
powershell 命令行可以正常工作,所以我认为问题出在 sql 文件本身。
如果我从提供等效参数的 dos 提示符运行 sqlcmd.exe,我的 sql 脚本可以工作。
我需要做什么才能让它工作?
【问题讨论】:
-
您是否尝试在 .\SQLExpress 之后添加数据库名称?
-
您的意思是使用 DATABASE 开关吗?
-
我尝试使用开关,但没有任何区别。
标签: powershell