適用於:SQL Server
Azure SQL 受控執行個體
系統基表是實際儲存特定資料庫的元數據的基礎表。 資料庫 master
在這方面很特別,因為它包含其他任何資料庫中找不到的一些其他數據表。 這些數據表包含具有全伺服器範圍的保存元數據。
重要
系統基表只會在 SQL Server 資料庫引擎內使用,不適用於一般客戶。 系統基表可能會變更,且不保證相容性。
系統基表元數據
資料庫具有 CONTROL
、 ALTER
或 VIEW DEFINITION
許可權的被授出席者,可以在目錄檢視中看到 sys.objects
系統基表元數據。 被授出席者也可以使用內建函式,例如OBJECT_NAME和OBJECT_ID,解析系統基表的名稱和物件識別碼。
若要系結至系統基表,用戶必須使用專用系統管理員連接 (DAC) 連接到 SQL Server 的實例。 嘗試從系統基表執行 SELECT
查詢,而不使用 DAC 進行連線,會產生錯誤。
重要
使用 DAC 存取系統基表的設計僅適用於Microsoft人員,而且不是支持的客戶案例。
系統基表
下表列出並描述 SQL Server 中的每個系統基表。
基表 | 描述 |
---|---|
sys.sysschobjs |
存在於每個資料庫中。 每個數據列都代表資料庫中的物件。 |
sys.sysbinobjs |
存在於每個資料庫中。 包含資料庫中每個 Service Broker 實體的數據列。 Service Broker 實體包含下列物件: 訊息類型 服務合約 服務 名稱和類型會使用固定的二進制定序。 |
sys.sysclsobjs |
存在於每個資料庫中。 針對每個共用包含下列物件的相同通用屬性的分類實體,各包含一個數據列: 組件 備份裝置 全文檢索目錄 分割區函數 分割區配置 檔案群組 模糊化索引鍵 結構描述 |
sys.sysnsobjs |
存在於每個資料庫中。 包含每個命名空間範圍實體的數據列。 此數據表用於儲存 XML 集合實體。 |
sys.syscolpars |
存在於每個資料庫中。 包含數據表、檢視或數據表值函式中每個數據行的數據列。 它也包含程式或函式之每個參數的數據列。 |
sys.systypedsubobjs |
存在於每個資料庫中。 包含每個具型別子項的數據列。 只有數據分割函式的參數屬於此類別。 |
sys.sysidxstats |
存在於每個資料庫中。 針對數據表和索引檢視表的每個索引或統計數據,各包含一個數據列 注意: 每個索引 (堆積除外) 都會與與索引同名的統計數據相關聯。 |
sys.sysiscols |
存在於每個資料庫中。 針對每個保存的索引和統計數據數據行,各包含一個數據列。 |
sys.sysscalartypes |
存在於每個資料庫中。 包含每個使用者定義或系統類型的數據列。 |
sys.sysdbreg |
僅存在於 master 資料庫中。 針對每個已註冊的資料庫,各包含一個數據列。 |
sys.sysxsrvs |
僅存在於 master 資料庫中。 包含每個本機、連結或遠端伺服器的數據列。 |
sys.sysrmtlgns |
這個系統基表只存在於 master 資料庫中。 包含每個遠端登錄對應的數據列。 這可用來將宣告來自對應伺服器的連入登入對應至實際的本機登入。 |
sys.syslnklgns |
僅存在於 master 資料庫中。 針對每個連結的登入對應,各包含一個數據列。 遠端過程調用和分散式查詢會使用連結的登入對應,這些查詢會從本地伺服器傳出至對應的連結伺服器。 |
sys.sysxlgns |
僅存在於 master 資料庫中。 包含每個伺服器主體的數據列。 |
sys.sysdbfiles |
存在於每個資料庫中。 如果數據行 dbid 為零,則數據列代表屬於這個資料庫的檔案。 在 master 資料庫中,數據行 dbid 可以是非零。 在此情況下,數據列代表主檔案。 |
sys.sysusermsg |
僅存在於 master 資料庫中。 每個數據列都代表使用者定義的錯誤訊息。 |
sys.sysprivs |
存在於每個資料庫中。 包含每個資料庫或伺服器層級許可權的數據列。 注意:伺服器層級的許可權會儲存在 master 資料庫中。 |
sys.sysowners |
存在於每個資料庫中。 每個數據列都代表資料庫主體。 |
sys.sysobjkeycrypts |
存在於每個資料庫中。 針對與 對象相關聯的每個對稱密鑰、加密或密碼編譯屬性,各包含一個數據列。 |
sys.syscerts |
存在於每個資料庫中。 包含資料庫中每個憑證的數據列。 |
sys.sysasymkeys |
存在於每個資料庫中。 每個數據列都代表非對稱金鑰。 |
sys.ftinds |
存在於每個資料庫中。 包含資料庫中每個全文檢索索引的數據列。 |
sys.sysxprops |
存在於每個資料庫中。 包含每個擴充屬性的數據列。 |
sys.sysallocunits |
存在於每個資料庫中。 包含每個記憶體配置單位的數據列。 |
sys.sysrowsets |
存在於每個資料庫中。 針對索引或堆積,包含每個數據分割數據列集的數據列。 |
sys.sysrowsetrefs |
存在於每個資料庫中。 針對數據列集參考的每個索引,各包含一個數據列。 |
sys.syslogshippers |
僅存在於 master 資料庫中。 包含每個資料庫鏡像見證的數據列。 |
sys.sysremsvcbinds |
存在於每個資料庫中。 包含每個遠端服務系結的數據列。 |
sys.sysconvgroup |
存在於每個資料庫中。 包含 Service Broker 中每個服務實例的數據列。 |
sys.sysxmitqueue |
存在於每個資料庫中。 包含每個 Service Broker 傳輸佇列的數據列。 |
sys.sysdesend |
存在於每個資料庫中。 針對 Service Broker 交談的每個傳送端點,各包含一個數據列。 |
sys.sysdercv |
存在於每個資料庫中。 針對 Service Broker 交談的每個接收端點,各包含一個數據列。 |
sys.sysendpts |
僅存在於 master 資料庫中。 針對伺服器中建立的每個端點,各包含一個數據列。 |
sys.syswebmethods |
僅存在於 master 資料庫中。 針對在伺服器上建立的SOAP啟用 HTTP 端點上定義的每個SOAP方法,各包含一個資料列。 |
sys.sysqnames |
存在於每個資料庫中。 針對 4 位元組識別碼令牌的每個命名空間或限定名稱,各包含一個數據列。 |
sys.sysxmlcomponent |
存在於每個資料庫中。 每個數據列都代表 XML 架構元件。 |
sys.sysxmlfacet |
存在於每個資料庫中。 包含 XML 類型定義之每個 XML Facet(限制)的數據列。 |
sys.sysxmlplacement |
存在於每個資料庫中。 針對 XML 元件的每個 XML 位置,各包含一個數據列。 |
sys.syssingleobjrefs |
存在於每個資料庫中。 包含每個一般 N 對 1 參考的數據列。 |
sys.sysmultiobjrefs |
存在於每個資料庫中。 包含每個一般 N 對 N 參考的數據列。 |
sys.sysobjvalues |
存在於每個資料庫中。 針對實體的每個一般值屬性,各包含一個數據列。 |
sys.sysguidrefs |
存在於每個資料庫中。 包含每個 GUID 分類識別碼參考的數據列。 |
更新系統基表
您可以透過系統目錄檢視來檢視系統資料表中的資料。 若要更新系統基表中的元數據,請使用適當的 Transact-SQL 介面(例如 DDL 語句)。 您無法手動更新系統資料表。 當您對系統數據表執行直接更新時,SQL Server 會報告下列訊息。
系統數據表已手錶更新
Msg 17659: Warning: System table ID <id> has been updated directly in database ID <id> and cache coherence may not have been maintained. SQL Server should be restarted.
使用手動更新的系統數據表啟動資料庫
Msg 3859: Warning: The system catalog was updated directly in database ID 17, most recently at date_time.
手動更新系統數據表之後,執行DBCC_CHECKDB命令
Msg 3859: Warning: The system catalog was updated directly in database ID 17, most recently at date_time.
如果您對系統數據表執行手動更新併發生問題,系統可能會要求您從備份還原,或將數據從受影響的資料庫複製到新的資料庫。 如需詳細資訊,請參閱MSSQLSERVER_8992的用戶動作。