10

SQLCMD でスクリプトを実行する場合、各 SQL ステートメントの最後に GO コマンドを効果的に実行するための設定、パラメーター、またはその他の方法はありますか?

これにより、周期的な GO コマンドを非常に大きなスクリプトに挿入する必要がなくなります。

4

2 に答える 2

8

いいえ。

SQLCMD は、ステートメントの境界がどこにあるかを判断するために、完全な T-SQL パーサー自体を実装する必要があります。現在存在するのに対し、「GO」が含まれる行を見つけるだけです。

「;」を考えると、ステートメントの境界を決定するのは非常に難しい場合があります。ターミネータは、ほとんどのステートメントで引き続きオプションです。

于 2011-02-09T15:35:32.760 に答える
3

うーん、これは役に立たないと思いますが、あなたの質問に対する答えです:

http://msdn.microsoft.com/en-us/library/ms162773.aspx

-c cmd_end バッチ ターミネータを指定します。既定では、行に「GO」という単語を単独で入力すると、コマンドが終了し、SQL Server に送信されます。バッチ ターミネータをリセットするときは、Transact-SQL の予約済みキーワードや、オペレーティング システムにとって特別な意味を持つ文字を使用しないでください。たとえ前にバックスラッシュがあったとしてもです。

特に最後の一文がむずかしそう…。

すべての行が ; で終わる場合 そしてありません。その他の場所 (テキスト フィールドなど) を試す

sqlcmd -c ;
于 2011-02-09T11:29:14.370 に答える