0

現在、口座振替商品の収入を予測するクエリがあります。このクエリは、一時テーブルではなく永続テーブルを使用します。これは、クエリが動的 SQL を使用しており、動的 SQL 実行の範囲外では一時テーブルが表示されないためです。

私がやりたいことは、グローバル一時テーブルを使用してそれらをストアド プロシージャに入れ、一時テーブルの範囲外の問題を回避することです。私の質問は、それらが並列に実行されることがなく、ストアド プロシージャが通常の一時テーブルのように実行されると、これらのグローバル一時テーブルが順次削除されるかどうかです。それとも、それらはグローバルであるため、tempdb に残されますか?

また、テーブルへの挿入方法を検討したことにも注意してください。残念ながら、以下の私のコメントによると、最終出力を作成するために約 1000 個のテーブルを使用しています。

4

1 に答える 1

0

これは、フリッカーのコメントを詳しく説明しています。ドキュメントは次のとおりです。

テーブルを作成したセッションが終了し、他のすべてのタスクがそれらの参照を停止すると、グローバル一時テーブルは自動的に削除されます。タスクとテーブルの間の関連付けは、1 つの Transact-SQL ステートメントが存続している間だけ維持されます。これは、作成セッションの終了時にテーブルをアクティブに参照していた最後の Transact-SQL ステートメントの完了時に、グローバル一時テーブルが削除されることを意味します。

したがって、これらはあなたが望むことをしているようです。

この目的でグローバル一時テーブルを使用することに私は興奮していません。しかし、彼らはあなたのニーズを満たしているようです。これらは、ストアド プロシージャが終了しても、セッションが終了したときに削除されません。テーブルを定義するときに動的 SQL を使用して、これを強制することができます。

于 2016-04-21T03:03:46.420 に答える