2

Visual Studio 2010 で SQL Server 2008 データベース プロジェクトに取り組んでいるときに、既存のストアド プロシージャ定義に新しいパラメーターを追加しました。プロジェクトをビルドしたときに、プロジェクトの他の場所にある sproc への参照に十分なパラメーターがないことを検出できませんでした。プロジェクトをデプロイすることさえできました。

これが意図された動作ですか、それともどこかでチェックボックスをオンにするのを忘れたのですか?!

サム:)

4

2 に答える 2

4

データベース プロジェクトは、プロシージャ/関数パラメーターの問題を検出しません。また、問題のあるプロシージャ/関数をプロジェクトからまとめて削除しても、失敗しないことに気付くでしょう。

私の場合、プログラマビリティを管理するために外部ツールを使用しているため、proc の欠落が原因でビルドが失敗しないという利点があります。

プロシージャと関数を検証する場合は、「SET FMTONLY ON」を使用してすべてのストアド プロシージャを実行するスクリプトを作成できます。プロシージャはコンパイルされますが、実行中に DB に永続的な変更が加えられることはありません。これは、一時テーブル (#table 構文) を使用するプロシージャでは使用できません。

これは、ストアド プロシージャの出力がどうあるべきかを判断するために Microsoft が Visual Studio で行っている方法です。

于 2011-08-17T21:18:31.790 に答える
0

コード生成ウィザードを再実行しない限り (VS サーバー エクスプローラーで sproc を削除してからドラッグして戻す)、プロジェクトはデータベースが変更されたことを認識しません。実行時エラーが発生する場合がありますが、コンパイル エラーは発生しません。

変更を認識しない場合は、正常にコンパイルされます。そうです、そのように振る舞うはずです。

于 2011-08-11T16:25:32.413 に答える