1. ホーム
  2. sql

[解決済み] SQL スクリプトでエラーが発生しました。1バッチに1ステートメントのみ許可されます

2022-02-15 02:30:24

質問

PostDeploymentのDACPACで実行したいSQLスクリプトが4つあるのですが、そのうちの3つのVSプロジェクトをビルドしようとすると、このエラーが表示されます。

Only one statement is allowed per batch. A batch separator, such as 'GO', might be required between statements.

スクリプトには INSERT ステートメントをDB上の異なるテーブルで実行します。そして、それらはすべて次のような構造になっています。

IF NOT EXISTS (SELECT 1 FROM dbo.Criteria WHERE Name = 'Mileage') INSERT INTO dbo.Criteria(Name) VALUES ('Mileage');

を、異なるテーブルと異なるデータに対してのみ実行します。

質問なのですが、どのスクリプトも構文や操作方法は同じなのに、なぜVSは3つも文句を言っているのでしょうか?

追記:エラーにあるように文の間に'GO'を入れても何の効果もありません。

どうすればいいですか?

問題が見つかりました。VSでファイルを追加したとき、私は以下の設定を忘れていました。 Build Action = None をファイルのプロパティから削除してください。これを変更したところ、問題が解決し、プロジェクトがコンパイルできるようになりました。