系統基底資料表
適用於:SQL ServerAzure 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。
如果您對系統資料表執行手動更新併發生問題,系統可能會要求您從備份還原,或將資料從受影響的資料庫複製到新的資料庫。 深入瞭解 使用者動作錯誤訊息 。
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應