如何通过powershell将多个变量传递到SQL脚本中?
我有以下几行代码来设置我的sqlcmd如何通过powershell将多个变量传递到SQL脚本中?,sql,powershell,powershell-4.0,Sql,Powershell,Powershell 4.0,我有以下几行代码来设置我的sqlcmd $mySqlCmd = "sqlcmd -S $server -U $username -P $pwd -d $dbname -o $lis -i $sqlScript -v fileDate = $fileDate, filePath = $filePath, sqlLoadErrors = $sqlLoadErrorPath" Invoke-Expression $mySqlCmd 这似乎不适用于多个变量。如果我删除试图传递到SQL脚本
$mySqlCmd = "sqlcmd -S $server -U $username -P $pwd -d $dbname -o $lis -i $sqlScript -v fileDate = $fileDate, filePath = $filePath, sqlLoadErrors = $sqlLoadErrorPath"
Invoke-Expression $mySqlCmd
这似乎不适用于多个变量。如果我删除试图传递到SQL脚本中的最后两个变量,SQL脚本将运行并工作
在我的SQL脚本中,我有以下内容:
DECLARE
@currentDate NVARCHAR(25),
@filePath NVARCHAR(25),
@sqlLoadErrors NVARCHAR(25)
SET @currentDate = $(fileDate)
SET @filePath = $(filePath)
SET @sqlLoadErrors = $(sqlLoadErrors)
powershell脚本将变量传递给SQL脚本时是否出错 试试这个:
$cmdparameters = @(
'fileDate = "17/06/2017"',
'filePath = "c:\temp\test.txt"',
'sqlLoadErrors = "yourcontent"'
)
$mySqlCmd = "sqlcmd -S $server -U $username -P $pwd -d $dbname -o $lis -i $sqlScript -v $cmdparameters"
Invoke-Expression $mySqlCmd
我敢打赌逗号会把解析器弄糊涂。我会尝试使用PowerShell的停止解析符号,
-%
。类似这样:$mySqlCmd=“sqlcmd-->S$server-U$username-P$pwd-d$dbname-o$lis-i$sqlScript-v fileDate=$fileDate,filePath=$filePath,sqlLoadErrors=$sqlLoadErrorPath”
。另外,$pwd
是当前工作目录的保留变量名。它来自“打印工作目录”的pwd
posixshell命令。我会避免使用它,它似乎不起作用。谢谢你的pwd提示,虽然我现在改变了。可能是