2017-02-14 11 views
0

テーブルセクションのテーブルを作成するTempDBは、ハッシュテーブルの作成と異なりますか?テンポラリテーブルとテーブルの違い

CREATE TABLE #abcd(
id INT, 
name varchar(10) 
) 

INSERT INTO #abcd VALUES (1,'22') 

ハッシュテーブルを作成する一時DBに

USE [tempdb] 
GO 

/****** Object: Table [dbo].[abc] Script Date: 2/14/2017 4:04:31 PM ******/ 
SET ANSI_NULLS ON 
GO 

SET QUOTED_IDENTIFIER ON 
GO 

CREATE TABLE [dbo].[abc](
    [id] [int] NULL, 
    [name] [nchar](10) NULL 
) ON [PRIMARY] 

GO 

のテーブルを作成する

は同じ一時DBとハッシュテーブルにこれらの表はありますか? この通常のテーブルは、一時DBに作成されているため、一時テーブルのように動作しますか?

答えて

2

TempDBのテーブルセクションにテーブルを作成することは、ハッシュテーブルを作成することと異なりますか?これらのテーブルは一時DBとハッシュテーブルに同じですか? TempDB

dbo.temp一時データベースreboot.sinceシステムは

#temp(テンプレートとしてモデルデータベースを使用して)任意の再起動後、最初から再作成されるまで持続するそのセッションに対してのみ持続する

あり#tempのようないくつかの相違点は、作成できません。

1.triggers
2.Foreign keys

要約

、tempdb内dbo.tempは普通のテーブルのよう

1

を働きますが、これを実行する必要はありません。

USE [tempdb] 

それが動作する方法はありません。あなたは上記の行せずに2番目のクエリでやっていることを実行すると、自動的にtempdbを使用します。

-- this creates a temp table in tempdb for you 
CREATE TABLE #abcd(
id INT, 
name varchar(10) 
) 

あなたはそれを指定する必要はありません。最初のクエリが正しくありません。 tempdbへの書き込みを特に試みるべきではありません.SQLサーバーはそこにテーブルの作成と整理を管理しているので、そうする必要はありません。

あなたが開いているクエリを持っている場合は、それが完了したら、これを実行することをお勧めします:

DROP TABLE #abcd 

そうでない場合は、一時テーブルが持続します。ストアドプロシージャで作成された場合は、スコープ外になると、一時テーブルがクリーンアップされます。

+1

"ストアドプロシージャで作成された場合、スコープ外になると、一時テーブルはスケジュールに従ってクリーンアップされます。 - あなたがここで何を言おうとしているか分からない。ストアドプロシージャ内で作成された一時テーブルは、ストアドプロシージャが戻るときに削除されることが明示的に文書化されています。 –

+0

@Damien_The_Unbeliever ok、それは私の理解のギャップです。 – Tanner

+1

私が参照していた[documentation](https://msdn.microsoft.com/en-us/library/ms174979.aspx)はこちらです(Temporary Tablesの最初の箇条書きを参照してください) –

関連する問題