SQL 脚本命令行参数
有没有办法获取将通过 SQLCMD 执行的脚本文件,以接受 SQLCMD 调用中传递的参数..
即..
SQLCMD (假设连接正常..) -V "1/25/2012" -i “ScriptFile.sql”
ScriptFile.sql 的结构是什么样的?它会以与其他程序相同的方式开始吗?
基本上我试图将带有参数的文本文件脚本作为 SQL 命令调用。到目前为止,我还没有找到任何关于此问题的 MSDN 文章。
Is there a way to get a script file that will be executing via SQLCMD to accept the parms passed in the SQLCMD call..
ie..
SQLCMD (assume the connection is OK..) -V "1/25/2012" -i "ScriptFile.sql"
What would the structure of ScriptFile.sql Look like? Would it start with the same as any other procedure..?
Basically I'm trying to call a text file script with parameters as an SQL command. So far I haven't been able to find any MSDN articles on this one.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
好的..如果有人关心的话,它是这样的...
使用该变量的 SQL 脚本文件使用该变量,如下所示:
--注意没有声明,并且参数的格式使用
$(Param)
而不是@Param
作为变量...命令行看起来几乎相同。由于某种原因,传递的值需要使用双引号内的单引号,如下所示:
在 ScriptFile 名称周围仅使用双引号,参数使用双引号中的单引号。
OK.. If anyone cares, it Goes Like This...
The SQL Script file which is using the variable uses the variable like so:
--Notice there's no declare, and the format of the parameter uses
$(Param)
instead of@Param
as a variable...The Command line looks almost the same. For some reason, the passed value needs to be in single quotes within double quotes, like so:
Use just double quotes around the ScriptFile name, Single within Double for the Parameters.
使用:
文件.sql:
USE:
file.sql:
根据 http://msdn.microsoft.com/en-us/library/ms188714 .aspx 您可以使用 -v 来设置脚本变量。这对我有用,而这里的其他解决方案则没有;
修剪.sql:
从 Column=$(Param) 的表中删除
以及在 dos cmd 或 powershell 中:
sqlcmd -S "My Server" -v Param=100 -i prune.sql
似乎只有当设置的值包含空格时才需要引号。希望这有帮助。
According to http://msdn.microsoft.com/en-us/library/ms188714.aspx you can use -v to set a scripting variable. This worked for me, and the other solutions here didnt;
prune.sql:
delete from Table where Column=$(Param)
and in dos cmd or in powershell:
sqlcmd -S "My Server" -v Param=100 -i prune.sql
Quotation marks seem only to be needed when the value being set has spaces. Hope this helps.