2013-03-17 8 views
7

私は、Visual Studio 2012のUpdate 1とSSDTを使用して、Visual Studio 2012の「データベースプロジェクト」システムを学習しています。Visual Studio 2012でデータベースプロジェクトとSQLデータツールを使用する:解決する一時テーブルを取得するにはどうすればよいですか?

データベースの実際の問題、特にデータベーステーブルからフィールドを削除したが、すべてのストアドプロシージャがエラーなしで実行されていることを確認するストアドプロシージャのプログラミングエラー。したがって、Visual Studio 2012の "ビルド"コマンドによる.sqlスクリプトの検証は非常に便利です。私はそれを放棄することを憎むだろう。

しかし、#TEMPTABLEがストアドプロシージャで使用されるときは、「共通オブジェクトの拡張Transact-SQL検証を有効にする」がオフになっていても、#temptable.field参照を含む「ビルドエラー」が発生しますストアドプロシージャで使用します。

データベースプロジェクトは、一時テーブルのスキーマを決定するためにどのような手順を実行しますか?私のテンポラリテーブルはメインスキーマには存在しないので、データベースの作成直後にインポートデータベースオプションを使用してVisual Studioに本物のSQLデータベースをインポートすると、データベースプロジェクトには入りませんでした。

"#TEMPTABLE.SQL"ファイルを作成してプロジェクトに追加する必要がありますか?

サンプルエラー:

c:\dev\...\dbo\Stored Procedures\xyz.sql(95,96): Warning: SQL71502: Procedure: [dbo].[proc123] has an unresolved reference to object [#temptable1].[somefield1]. 

一度使用中temptablesを定義したスクリプトが含まれ、それがT-SQL場合は、これらについて知っておく必要がありますさまざまな場所にそれを含める方法があった場合徹底的に検証されていれば問題ありません。また、Turning of Extended Verificationがそうすると思い込んだ場合、おそらく何も必要ありません。

Forum post suggests this isn't possible to fix and that all I can do is effectively turn off this warning at a file level, which is kind of horrible.

A question on this same subject but for Visual Studio 2010これは、この技術はちょうどフラットアウト破損しているとMicrosoftはそれについて年間、知られており、それについて何もしなかった地域であることを示唆しています。 VS2012.U1 + SSDT_Dec2012で何か改善されましたか?

+0

セッションのスコープ内で作成されたtempテーブルを参照していて、別の場所で使用されています(1 procで作成され、別のテーブルで使用されます)。または、これはすべて1つのprocでですか? – Rich

+0

これらは、このストアドプロシージャが呼び出される前に作成され、呼び出されたストアドプロシージャによってのみ変更された、ストアドプロシージャのほとんど「不可視の入力」として使用される一時テーブルです。実際には、このストアドプロシージャがプレステートとして存在すると予想していることを正確に言うのは難しいので、これはかなり厄介な "スキーマの匂い"かもしれません。私はそれが大好きではありませんが、それは私が内部で仕事をしなければならないものです。さらに悪いことは、テンポラリテーブルを作成するアプリケーションが、テンポラリテーブル用にスキーマが定義されている唯一の場所だということです。私は ' - #プラグマ'を探していたのですが... –

+0

私はMicrosoftの 'social.msdn'サイトで同じ質問をしました:http://social.msdn.microsoft.com/Forums/en-US/ ssdt/thread/12c0a590-4273-4861-8d00-a5804b0ea6cc –

答えて

3

これはtempテーブルの問題です。テーブル値関数を使用する必要があります。

+0

これは正しいです。おそらく、マイクロソフトが一時表システムを安全に実装することはできません。 –

関連する問題