0

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

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

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

我正在使用 windows 和 sql server express 2008 r2

4

2 回答 2

4

您可以在 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

于 2013-02-06T22:25:12.080 回答
1

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

示例:假设您需要替换127.0.0.1192.168.1.1,您可以使用以下指令:

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

这将替换旧的 ipscript.sql并将此脚本的副本保存在newScript.sql.

在 Windows 上,我不知道该怎么做,但您可以随时下载并安装 Cygwin 以完全按照上述方式进行操作。

希望这对您有所帮助。

于 2013-02-06T22:20:33.073 回答