系統資料庫

適用於:SQL ServerAzure SQL DatabaseAzure SQL 受控執行個體

SQL Server 包括下列系統資料庫。

系統資料庫 描述
master 資料庫 記錄 SQL Server 執行個體的所有系統層級資訊。
msdb 資料庫 由 SQL Server Agent 用於排程警示和作業。
model 資料庫 用來當作 SQL Server 執行個體上建立之所有資料庫的範本。 對 model 資料庫進行的修改 (例如,資料庫大小、定序、復原模式和其他資料庫選項) 會套用到之後建立的任何資料庫。
Resource 資料庫 是一個唯讀的資料庫,其中包含 SQL Server 擁有的系統物件。 系統物件實際上會保存在 Resource 資料庫中,但邏輯上會出現在每個資料庫的 sys 結構描述中。
tempdb 資料庫 是保存暫存物件或中繼結果集的工作空間。

重要

針對 Azure SQL Database 單一資料庫和彈性集區,只會套用 master 資料庫和 tempdb 資料庫。 如需詳細資訊,請參閱什麼是 Azure SQL Database 伺服器。 如需 Azure SQL Database 內容中 tempdb 的討論,請參閱 Azure SQL Database 中的 tempdb 資料庫。 針對 Azure SQL 受控執行個體,則會套用所有系統資料庫。 如需有關 Azure SQL Database 中受控執行個體的詳細資訊,請參閱什麼是受控執行個體

修改系統資料

SQL Server 不支援使用者直接更新系統物件中的資訊,例如系統資料表、系統預存程序和目錄檢視。 SQL Server 另外提供了一組完整的管理工具,讓使用者可以完全管理他們的系統,並管理資料庫中所有的使用者與物件。 這些選項包括:

  • 管理公用程式,例如 SQL Server Management Studio。

  • SQL-SMO API。 可讓程式設計人員加入完整的功能,以在應用程式中管理 SQL Server。

  • Transact-SQL 指令碼和預存程式。 上述項目可以使用系統預存程序和 Transact-SQL DDL 陳述式。

這些工具可避免應用程式在系統物件中被變更。 例如,SQL Server 有時需要在新版的 SQL Server 中變更系統資料表,以支援加入該版本的新功能。 提出直接參考系統資料表的 SELECT 陳述式之應用程式,它們通常依賴系統資料表的舊有格式。 站台可能要等到重寫從系統資料表選取的應用程式之後,才能夠升級到新版的 SQL Server。 SQL Server 會考量系統預存程序、DDL 和 SQL-SMO 發佈的介面,並努力維護這些介面的回溯相容性。

SQL Server 並不支援在系統資料表上定義的觸發程序,因為這些觸發程序可能會修改系統的作業。

注意

系統資料庫無法位於 UNC 共用目錄。

檢視系統資料庫資料

您不應撰寫直接查詢系統資料表的 Transact-SQL 陳述式,除非這是取得應用程式所需資訊的唯一方式。 相反地,應用程式應使用下列方法取得目錄和系統資訊:

  • 系統目錄檢視

  • SQL-SMO

  • Windows Management Instrumentation (WMI) 介面

  • 用於應用程式的資料 API 之 Catalog 函數、方法、屬性 (attribute) 或屬性 (property),例如 ADO、OLE DB 或 ODBC。

  • Transact-SQL 系統預存程序和內建函數。