0

IP アドレスからデータベースを復元し、データベースに対していくつかの .sql ファイルを実行するバッチ ファイルを作成しています。いくつかの .sql ファイルには、宣言および設定された変数があります。ただし、このプロセスは、各マシンの変数ごとに異なる値を持つ多くのマシンで実行する必要があります。

そのため、ユーザーが IP を入力してデータベースを復元することはできますが、バッチ スクリプト コマンドを使用して変数値を変更する方法がわかりません。

たとえば、.sql ファイルの 1 つで、変数 @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.1をに置き換える必要があると仮定すると192.168.1.1、次の命令を使用できます。

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

これにより、 の古い IP が置き換えられ、script.sqlこのスクリプトのコピーが に保存されnewScript.sqlます。

Windows での方法はわかりませんが、Cygwin をダウンロードしてインストールすると、上記とまったく同じようにいつでも実行できます。

これがお役に立てば幸いです。

于 2013-02-06T22:20:33.073 に答える