2012-01-25 68 views
1

有没有办法让将通过SQLCMD来执行,接受在SQLCMD调用中传递的PARMS脚本文件..SQL脚本命令行参数

即..

SQLCMD(假设连接是OK ..)-V“1/25/2012”-i“ScriptFile.sql”

ScriptFile.sql的结构会是什么样子?它会和其他程序一样开始吗??

基本上我试图调用带有参数的文本文件脚本作为SQL命令。到目前为止,我一直无法找到任何MSDN文章。

回答

6

OK,如果还有人关心,它是这样的......

SQL脚本文件,该文件是使用变量使用像这样的变量:

更新表名Set ColumnValue = $(参数)

--notice没有申报,参数的格式使用
$(帕拉姆)而不是@Param作为变量...

命令行看起来几乎是相同的。出于某种原因,传递的值需要在双引号内单引号,像这样:

SQLCMD -S服务器-d数据库名-v帕拉姆=“‘帕拉姆’” -i“ScriptFile.sql”

只在ScriptFile名称周围使用双引号,对于参数在双精度内使用双引号。

+0

它会在您的脚本中设置ColumnValue ='$(Param)',然后在没有单引号的情况下传递值吗? – CoderDennis

1

用途:

sqlcmd -E -S <Your Server> -v test="Test String" -i file.sql 

file.sql:

SELECT @test 
+0

它的工作原理!谢谢!! –

+0

Retraction ..它似乎工作..直到我追赶它一路通过..它没有通过parm ..我可以包括一切的样本..看着分析器,我可以看到SQL正在执行,但帕尔姆已经没有值..它用空值更新数据库.. –

1

根据http://msdn.microsoft.com/en-us/library/ms188714.aspx,您可以使用-v来设置脚本变量。这对我有用,而这里的其他解决方案并没有;

prune.sql: 从表删除其中柱= $(帕拉姆)

和在DOS CMD或在的powershell: SQLCMD -S “我的服务器” -v帕拉姆= 100 -i剪枝.sql

当设置的值有空格时,引号似乎只是需要的。希望这可以帮助。