16

私は理解しようとしていtempDBますが、以下は私の頭に浮かぶ疑問です。

  1. のデータの寿命はtempDB? クエリが何らかの処理を行っており、それを実行するためOrder Byに使用しているとtempDBします。このクエリが終了した後、他の誰かが を利用するクエリも実行しますtempDB。2 番目のクエリは、最初のクエリによって書き込まれたレコードを検索しますか、tempDBそれとも削除しますか?
  2. SQL エンジンによって内部に作成された目に見えるテーブルはありますか? tempDBこのクエリによってどの一時テーブルが作成されたかを知るにはどうすればよいですか? これらの一時テーブルに名前を付けるための SQL エンジンが従う命名規則はありますか?

私は初めてなtempDBので、そのようなばかげた(もしあったとしても)質問をすることを許してください:-)

誰かがtempDBについて学ぶのに役立つ良いリソースを教えてくれたらとてもうれしいです.

4

3 に答える 3

19

一時テーブルは、接続が切断されるまで tempdb に格納されます (グローバル一時テーブルの場合は、それを使用する最後の接続が切断されるまで)。テーブルの使用が終了したら、drop table ステートメントを使用してテーブルを手動で削除することもできます (そうすることをお勧めします)。

いいえ、ローカル一時テーブルの場合、他の人はあなたの一時テーブルを見ることができません (彼らはグローバル一時テーブルを見て使うことができます)。 #test という名前のテーブルを作成でき、他の 10,000 人のユーザーも作成できますが、それぞれが独自の構造とデータを持っています。

通常、tempdb で一時テーブルを検索する必要はありません。存在を確認することは可能ですが、tempdb を直接参照したのはそのときだけです。一時テーブル名を使用するだけです。以下の存在チェックの例

  IF OBJECT_ID('TempDB.dbo.#DuplicateAssignments') IS NOT NULL 
  BEGIN 
  DROP TABLE #DuplicateAssignments 
  END  

名前の先頭に # (ローカル テーブルの場合は 999.9% の確率で使用するテーブル) を付け、グローバル一時テーブルの場合は ## を付けてから、必要な名前の残りの部分を付けて、一時テーブルに名前を付けます。

于 2009-10-20T15:01:31.043 に答える
3

SQL Server の tempDB データベースに関する最良の情報源と思われる MSDN の記事がいくつかあります。

tempdb データベース

tempdb システム データベースは、SQL Server のインスタンスに接続しているすべてのユーザーが使用できるグローバル リソースであり、次のものを保持するために使用されます。

  • グローバルまたはローカル一時テーブル、一時ストアド プロシージャ、テーブル変数、カーソルなど、明示的に作成された一時ユーザー オブジェクト。
  • スプールや並べ替えの中間結果を格納する作業テーブルなど、SQL Server データベース エンジンによって作成される内部オブジェクト。
  • 行のバージョン管理による分離トランザクションまたはスナップショット分離トランザクションを使用してコミットされた読み取りを使用するデータベースで、データ変更トランザクションによって生成される行バージョン。
  • オンライン インデックス操作、複数のアクティブな結果セット (MARS)、AFTER トリガーなどの機能のデータ変更トランザクションによって生成される行バージョン。

tempdb 内の操作は最小限に記録されます。これにより、トランザクションをロールバックできます。tempdb は、SQL Server が起動されるたびに再作成されるため、システムは常にデータベースのクリーン コピーで起動します。一時テーブルとストアド プロシージャは切断時に自動的に削除され、システムがシャットダウンされると接続はアクティブになりません。したがって、tempdb には、SQL Server のあるセッションから別のセッションに保存されるものはありません。tempdb では、バックアップおよび復元操作は許可されていません。

tempdb と Index Creationもあります。このブログ記事は、 Working with tempdb in SQL Server 2005 と共に次のように述べています。

SQL Server システム データベースである tempdb は、SQL Server 2005 で多くの変更が加えられました。SQL Server 2005 では、新しい tempdb の使用と内部最適化が行われています。tempdb アーキテクチャは、SQL Server 2000 以降ほとんど変更されていません。

tempdb システム データベースは、ユーザー データベースに非常に似ています。主な違いは、tempdb のデータは SQL Server のシャットダウン後は保持されないことです。

于 2009-10-20T15:09:35.137 に答える
0
  1. TempDB に作成された一時テーブルは、クエリが完了すると削除されます。

  2. これについてはよくわかりませんが(試してみる必要があります)、テーブルを作成したユーザーだけがそれにアクセスする権限を持っていますが、理論的にはTempDBで作成されたすべてのテーブルが表示されると思います。

于 2009-10-20T14:59:04.503 に答える