sql server-有没有批处理脚本命令,我可以在其中更改.sql文件中的变量值



我正在创建一个批处理文件,从IP地址恢复数据库,然后在数据库上执行几个.sql文件。在几个.sql文件中,声明并设置了变量。但这个过程必须在许多机器上完成,每台机器中的每个变量都有不同的值。

因此,我可以通过IP的用户输入来恢复数据库,但我不知道如何使用批处理脚本命令来更改变量值。

例如,在一个.sql文件中,声明了一个变量@store,并将其设置为某个随机数。我想通过批处理文件更改那个数字。

我使用的是windows和sql server express 2008 r2

您可以在SQLCMD中使用"脚本变量"。

下面是MSDN页面中的一个示例:

您还可以使用-v选项来设置脚本中存在的脚本变量。在以下脚本(文件名为testscript.sql)中,ColumnName是一个脚本变量。

USE AdventureWorks2012;
SELECT x.$(ColumnName)
FROM Person.Person x
WHERE c.BusinessEntityID < 5;

然后,您可以使用-v选项指定要返回的列的名称:

sqlcmd -v ColumnName ="FirstName" -i c:testscript.sql

若要使用同一脚本返回不同的列,请更改ColumnName脚本变量的值。

sqlcmd -v ColumnName ="LastName" -i c:testscript.sql

如果您在Unix/Linux系统上工作,可以使用sed搜索字符串。

示例:假设需要将127.0.0.1替换为192.168.1.1,则可以使用以下指令:

$ sed 's/127.0.0.1/192.168.1.1/g' script.sql > newScript.sql

这将替换script.sql中的旧ip,并将此脚本的副本保存在newScript.sql中。

在windows上,我不知道如何做到这一点,但你可以下载并安装Cygwin来完成上述操作。

希望这对你有帮助。

最新更新