共用方式為


tempdb 資料庫

tempdb系統資料庫是全域資源,可供連線到 SQL Server 實例的所有使用者使用,並用來保存下列專案:

  • 明確建立的暫存使用者物件 (例如:全域或本機暫存資料表、暫存預存程序、資料表變數或資料指標)。

  • 例如,SQL Server Database Engine 所建立的內建物件,可用來儲存多工緩衝處理或排序的中繼結果。

  • 由資料庫中的資料修改交易所產生的資料列版本,該資料庫採用使用資料列版本設定隔離的讀取認可或快照集隔離交易。

  • 由以下這類功能的資料修改交易所產生的資料列版本:線上索引作業、Multiple Active Result Set (MARS) 和 AFTER 觸發程序。

tempdb 中的作業會以最低限度記錄。 這可讓您回復交易。 tempdb會在每次啟動SQL Server時重新建立,讓系統一律以全新的資料庫複本開始。 連接中斷時會自動卸除暫存資料表與預存程序,且系統關閉時所有連接都會停止。 因此,tempdb中永遠不會儲存任何專案,從某個會話SQL Server儲存到另一個會話。 tempdb上不允許備份和還原作業。

tempdb 的實體屬性

下表列示 tempdb 資料和記錄檔的初始組態值。 對於不同版本的 SQL Server,這些檔案的大小稍有不同。

檔案 邏輯名稱 實體名稱 檔案成長
主要資料 tempdev tempdb.mdf 以百分之 10 的比例自動成長,直到磁碟全滿
Log templog templog.ldf 以 10% 的比例自動成長,最大至 2 TB

tempdb的大小可能會影響系統的效能。 例如,如果tempdb大小太小,系統處理可能會過度佔用自動成長資料庫,以支援每次啟動SQL Server的工作負載需求。 您可以藉由增加 tempdb的大小來避免此額外負荷。

tempdb 中的效能改進

在SQL Server中,tempdb效能會以下列方式改善:

  • 可能會快取暫存資料表和資料表變數。 快取允許卸除和建立暫存物件以極快速度執行的作業,並減少頁面配置競爭。

  • 已改進配置頁面閂鎖通訊協定。 這會減少所使用的 UP (更新) 閂鎖數目。

  • 會減少 tempdb 的記錄負擔。 這會減少 tempdb 記錄檔的磁碟 I/O 頻寬耗用量。

  • 已改善 在 tempdb 中配置混合頁面的演算法。

移動 tempdb 資料和記錄檔

若要移動 tempdb 資料和記錄檔,請參閱 移動系統資料庫

資料庫選項

下表列出 tempdb 資料庫中每個資料庫選項的預設值,以及是否可以修改選項。 若要檢視這些選項目前的設定,請參閱 sys.databases 目錄檢視。

資料庫選項 預設值 可以修改
ALLOW_SNAPSHOT_ISOLATION OFF
ANSI_NULL_DEFAULT OFF
ANSI_NULLS OFF
ANSI_PADDING OFF
ANSI_WARNINGS OFF
ARITHABORT OFF
AUTO_CLOSE OFF
AUTO_CREATE_STATISTICS 開啟
AUTO_SHRINK OFF
AUTO_UPDATE_STATISTICS 開啟
AUTO_UPDATE_STATISTICS_ASYNC OFF
CHANGE_TRACKING OFF
CONCAT_NULL_YIELDS_NULL OFF
CURSOR_CLOSE_ON_COMMIT OFF
CURSOR_DEFAULT GLOBAL
資料庫可用性選項 ONLINE

MULTI_USER

READ_WRITE


No

DATE_CORRELATION_OPTIMIZATION OFF
DB_CHAINING 開啟
ENCRYPTION OFF
NUMERIC_ROUNDABORT OFF
PAGE_VERIFY SQL SERVER的新安裝 CHECKSUM。

無 可升級SQL Server。
PARAMETERIZATION 簡單
QUOTED_IDENTIFIER OFF
READ_COMMITTED_SNAPSHOT OFF
RECOVERY 簡單
RECURSIVE_TRIGGERS OFF
Service Broker 選項 ENABLE_BROKER
TRUSTWORTHY OFF

如需這些資料庫選項的描述,請參閱 ALTER DATABASE SET 選項 (Transact-SQL)

Restrictions

無法在 tempdb 資料庫上執行下列作業:

  • 加入檔案群組。

  • 備份或還原資料庫。

  • 變更定序。 預設定序是伺服器定序。

  • 變更資料庫擁有者。 tempdb 是由 sa所擁有。

  • 建立資料庫快照集。

  • 卸除資料庫。

  • 從資料庫卸除 guest 使用者。

  • 啟用異動資料擷取。

  • 參與資料庫鏡像。

  • 移除主要檔案群組、主要資料檔或記錄檔。

  • 重新命名資料庫或主要檔案群組。

  • 執行 DBCC CHECKALLOC。

  • 執行 DBCC CHECKCATALOG。

  • 將資料庫設定為 OFFLINE。

  • 將資料庫或主要檔案群組設定為 READ_ONLY。

權限

任何使用者都可以在 tempdb 中建立暫時物件。 除非收到其他權限,否則使用者只能存取自己的物件。 您可以撤銷 tempdb 的連接權限來阻止使用者使用 tempdb,不過不建議您這樣做,因為有些常式作業需要使用 tempdb。

索引的 SORT_IN_TEMPDB 選項

系統資料庫

sys.databases (Transact-SQL)

sys.master_files (Transact-SQL)

移動資料庫檔案

另請參閱

在 SQL Server 2005 中使用 tempdb