table1
次のように作成された一時テーブルがあります。
create table
tempdb..table1
(id int)
tempdb
テーブルは、データベースの所有者によって作成されたものではありません。
以前にストアドプロシージャ内でこのクエリを使用してテーブルにアクセスしようとしたとき(テスト用):
select top 10 * from tempdb..table1
このエラーが発生しました:
Msg 208, Level 16, State 1:
Server 'SERVER', Procedure 'storedProcedure', Line 30:
tempdb..table1 not found. Specify owner.objectname or use sp_help to check whether the object
exists (sp_help may produce lots of output).
しかし、約 1 時間後、同じストアド プロシージャが問題なく実行されました。
その時間中にテーブルが削除されたり再作成されたりすることはなく、この奇妙な動作の理由を見つけることができません。ある種のネーミング ハックを適用することでこれを修正できますが、非常に機密性の高いフローにハックを挿入したくありません。つまり、多くのユーザーがテーブルを削除して作成する可能性があります。
今後回避できるように、誰かがこの動作を説明できるかどうかを尋ねています。