我正在创建一个批处理文件,从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来完成上述操作。
希望这对你有帮助。