2005として指定されたデータベースプロジェクトがあります(これは、プロジェクト設定の下のプロパティ画面にあります)。
2005年に本番環境に対して展開および実行するサーバーがいくつかありますが、開発対象の2008 R2サーバーがいくつかあるため、プロジェクトを2005として指定します。
開発専用の2008R2データベースで作成したストアドプロシージャを追加しました。すべて正常に動作するので、データベースプロジェクトに追加しました。プロジェクトは正常にビルドおよびデプロイされました。つまり、.sqlファイルが生成されます。VSプロジェクトからの変更は適用されません。
2005データベースに対して実行されるCITFSビルドがあります。(いくつかの構成があり、それぞれが異なるデータベースに対して「デプロイ」されます)。それはうまく構築され、展開されました。ここでも、更新をSQLファイルに生成するだけでした。
ストアドプロシージャには、次のコードが含まれています。
insert SiteCAChargeParameterSet
values (
( select siteID
from SiteCAChargeParameterSet
where SiteCAChargeParameterSetID = @OldSiteCAChargeParameterSet
),
@NewSetName,0,0,@UserID, @currentDate,@UserID, @currentDate
)
すべての変数が定義されています。2005データベースでこのストアドプロシージャを作成しようとすると、「このコンテキストではサブクエリは許可されていません」という選択が許可されていないことを示すエラー(1046)が表示されます。
私の質問は、なぜコンパイラがこれを許可するのかということです。明らかに、これはSQL Server 2005プロジェクトであることを示したので、そのバージョンのルールに従う必要があります。さらに、デプロイのために2005データベースと比較しているので、これは違法であることも知っておく必要があります。
私がオンにしていないオプションなどがどこかにあることを望んでいます。または、これはSQL'コンパイラ'の単なるエラーですか。