Reporting Services 2000の一時テーブルの問題
-
03-07-2019 - |
質問
一時テーブルを使用するストアドプロシージャを使用して、レポートマネージャーでレポートを作成しました。
エラーが表示されます"クエリのフィールドのリストを生成できませんでした。無効なオブジェクト名 '#xxxx'"
これを読んだのは、レポートマネージャーがPrepareQueryを試行するときに、一時テーブルがまだ存在しないために実行が困難になるためです。これは正しいですか?その場合、回避策はありますか?
解決
私はこれに一度遭遇しました...実際にはまったく同じことです。一時テーブルを作成する前に、この行をSPにドロップして修正しました。
SET FMTONLY OFF
これでうまくいくはずです。
他のヒント
唯一の方法は明白な方法です。一時テーブルを永続的なものにし、自分で管理します(使用後の行の削除など)。これはインデックス化可能でも高速であり、整合性を確保するために必要に応じてキーを追加できます。また、長時間実行されるクエリのキャッシュとしても機能します。
spを呼び出すユーザーが1人しかいないことが確実な場合は、削除ではなくtruncateを使用してテーブルからデータをダンプできます。
あまり役に立たないが、他の方法は見つけられなかった。
レポートサービスについてはあまり知りませんが、正確に聞こえます。
データを保存するために一時テーブルを使用できない場合があるようです。代わりに永続的なテーブルを使用する必要がある場合があります。
とにかく別のテーブルを使用している理由を自問します。データはすでに他のテーブルに存在しますか?代わりにそこから入手できますか?別のテーブルを使用することを選択できない場合がありますが、確認してください。
問題の正確な原因はわかりませんが、変数テーブルを使用してみてください。
declare @table table (Field int)