系統基底資料表
適用於: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 會報告下列訊息。
系統數據表已手錶更新
訊息 17659:警告:系統數據表<>標識符標識碼已直接在資料庫<>標識碼中更新,且快取一致性可能尚未維護。 應該重新啟動 SQL Server。
使用手動更新的系統數據表啟動資料庫
Msg 3859:警告:系統目錄已直接在資料庫標識碼 17 中更新,最近於 date_time。
手動更新系統數據表之後,執行DBCC_CHECKDB命令
Msg 3859:警告:系統目錄已直接在資料庫標識碼 17 中更新,最近於 date_time。
如果您對系統數據表執行手動更新併發生問題,系統可能會要求您從備份還原,或將數據從受影響的資料庫複製到新的資料庫。 深入瞭解 使用者動作錯誤訊息。