質問

一時テーブルを使用するストアドプロシージャを使用して、レポートマネージャーでレポートを作成しました。

エラーが表示されます"クエリのフィールドのリストを生成できませんでした。無効なオブジェクト名 '#xxxx'"

これを読んだのは、レポートマネージャーがPrepareQueryを試行するときに、一時テーブルがまだ存在しないために実行が困難になるためです。これは正しいですか?その場合、回避策はありますか?

役に立ちましたか?

解決

私はこれに一度遭遇しました...実際にはまったく同じことです。一時テーブルを作成する前に、この行をSPにドロップして修正しました。

SET FMTONLY OFF

これでうまくいくはずです。

他のヒント

唯一の方法は明白な方法です。一時テーブルを永続的なものにし、自分で管理します(使用後の行の削除など)。これはインデックス化可能でも高速であり、整合性を確保するために必要に応じてキーを追加できます。また、長時間実行されるクエリのキャッシュとしても機能します。

spを呼び出すユーザーが1人しかいないことが確実な場合は、削除ではなくtruncateを使用してテーブルからデータをダンプできます。

あまり役に立たないが、他の方法は見つけられなかった。

レポートサービスについてはあまり知りませんが、正確に聞こえます。

データを保存するために一時テーブルを使用できない場合があるようです。代わりに永続的なテーブルを使用する必要がある場合があります。

とにかく別のテーブルを使用している理由を自問します。データはすでに他のテーブルに存在しますか?代わりにそこから入手できますか?別のテーブルを使用することを選択できない場合がありますが、確認してください。

問題の正確な原因はわかりませんが、変数テーブルを使用してみてください。

declare @table table (Field int)
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top