システム ベース テーブル

適用対象: SQL ServerAzure SQL Managed Instance

システム ベース テーブルは、特定のデータベースのメタデータを実際に格納する、基になるテーブルです。 マスター データベースには、他のどのデータベースにも見つからない追加のテーブルがいくつか含まれているため、この点で特別です。 これらのテーブルには、サーバー全体のスコープを持つ永続化されたメタデータが含まれています。

重要

システム ベース テーブルは、SQL Server データベース エンジン内でのみ使用され、一般的な顧客向けではありません。 これらは変更される可能性があり、互換性は保証されません。

システム ベース テーブルのメタデータ

データベースに対する CONTROL、ALTER、または VIEW DEFINITION 権限を持つ権限付与対象ユーザーは、sys.objects カタログ ビューでシステム ベース テーブルのメタデータを表示できます。 権限付与対象ユーザーは、OBJECT_NAMEやOBJECT_IDなどの組み込み関数を使用して、システム 基本テーブルの名前とオブジェクト ID を解決することもできます。

システム ベース テーブルにバインドするには、ユーザーは専用管理者接続 (DAC) を使用して SQL Server のインスタンスに接続する必要があります。 DAC で接続せずにシステム ベース テーブルから SELECT クエリを実行しようとすると、エラーが発生します。

重要

DAC を使用したシステム ベース テーブルへのアクセスは、Microsoft の担当者専用に設計されており、サポートされている顧客シナリオではありません。

システム ベース テーブル

次の表に、SQL Server の各システム ベース テーブルの一覧と説明を示します。

ベース テーブル 説明
sys.sysschobjs すべてのデータベースに存在します。 各行は、データベース内のオブジェクトを表します。
sys.sysbinobjs すべてのデータベースに存在します。 データベース内の各 Service Broker エンティティの行を格納します。 Service Broker エンティティには、次のものが含まれます。

Message type (メッセージの種類)

サービス コントラクト

Service

名前と型は、固定されたバイナリ照合順序を使用します。
sys.sysclsobjs すべてのデータベースに存在します。 次のような同じ共通プロパティを共有する、分類された各エンティティの行が含まれます。

アセンブリ

バックアップ デバイス

フルテキスト カタログ

パーティション関数

[パーティション構成]

ファイル グループ

難読化キー

[スキーマ]
sys.sysnsobjs すべてのデータベースに存在します。 名前空間スコープエンティティごとに 1 行が含まれます。 このテーブルは、XML コレクション エンティティの格納に使用されます。
sys.syscolpars すべてのデータベースに存在します。 テーブル、ビュー、またはテーブル値関数のすべての列の行を格納します。 また、プロシージャまたは関数のパラメーターごとの行も格納します。
sys.systypedsubobjs すべてのデータベースに存在します。 型指定されたサブエンティティごとに 1 行のデータを格納します。 パーティション関数のパラメーターのみがこのカテゴリに分類されます。
sys.sysidxstats すべてのデータベースに存在します。 テーブルおよびインデックス付きビューのインデックスまたは統計ごとに 1 行のデータを格納します。

注: すべてのインデックス (ヒープを除く) は、インデックスと同じ名前の統計に関連付けられます。
sys.sysiscols すべてのデータベースに存在します。 永続化されたインデックス列と統計列ごとに 1 行が含まれます。
sys.sysscalartypes すべてのデータベースに存在します。 ユーザー定義型またはシステム型ごとに 1 行を格納します。
sys.sysdbreg master データベースにのみ存在します。 登録されたデータベースごとに 1 行のデータを格納します。
sys.sysxsrvs master データベースにのみ存在します。 ローカル サーバー、リンク サーバー、またはリモート サーバーごとに 1 行のデータを格納します。
sys.sysrmtlgns このシステム 基本テーブルは、master データベースにのみ存在します。 リモート ログイン マッピングごとに 1 行が含まれます。 対応するサーバーから送信されてきたと称する受信ログインを、実際のローカル ログインにマップするために使用します。
sys.syslnklgns master データベースにのみ存在します。 リンク ログイン マッピングごとに 1 行のデータを格納します。 リンク ログイン マッピングは、ローカル サーバーから対応するリンク サーバーに出力されるリモート プロシージャ コールと分散クエリによって使用されます。
sys.sysxlgns master データベースにのみ存在します。 各サーバー プリンシパルの行が含まれています。
sys.sysdbfiles すべてのデータベースに存在します。 列 dbid が 0 の場合、行はこのデータベースに属するファイルを表します。 master データベースでは、列 dbid は 0 以外にすることができます。 その場合、該当する行は master ファイルを表します。
sys.sysusermsg master データベースにのみ存在します。 各行は、ユーザー定義のエラー メッセージを表します。
sys.sysprivs すべてのデータベースに存在します。 データベース レベルまたはサーバー レベルの権限ごとに 1 行のデータを格納します。

注: サーバー レベルのアクセス許可はマスター データベースに格納されます。
sys.sysowners すべてのデータベースに存在します。 各行はデータベース プリンシパルを表します。
sys.sysobjkeycrypts すべてのデータベースに存在します。 オブジェクトに関連付けられている各対称キー、暗号化、または暗号化プロパティの行を格納します。
sys.syscerts すべてのデータベースに存在します。 データベース内の証明書ごとに 1 行のデータを格納します。
sys.sysasymkeys すべてのデータベースに存在します。 各行は非対称キーを表します。
sys.ftinds すべてのデータベースに存在します。 データベース内のフルテキスト インデックスごとに 1 行のデータを格納します。
sys.sysxprops すべてのデータベースに存在します。 拡張プロパティごとに 1 行のデータを格納します。
sys.sysallocunits すべてのデータベースに存在します。 各ストレージ割り当てユニットの行が含まれます。
sys.sysrowsets すべてのデータベースに存在します。 インデックスまたはヒープの各パーティション行セットの行を格納します。
sys.sysrowsetrefs すべてのデータベースに存在します。 行セットへの参照に対する各インデックスの行を格納します。
sys.syslogshippers master データベースにのみ存在します。 データベース ミラーリング監視サーバーごとに 1 行のデータを格納します。
sys.sysremsvcbinds すべてのデータベースに存在します。 各リモート サービス バインドの行が含まれています。
sys.sysconvgroup すべてのデータベースに存在します。 Service Broker の各サービス インスタンスの行を格納します。
sys.sysxmitqueue すべてのデータベースに存在します。 Service Broker 伝送キューごとに 1 行が含まれます。
sys.sysdesend すべてのデータベースに存在します。 Service Broker メッセージ交換の送信エンドポイントごとに 1 行のデータを格納します。
sys.sysdercv すべてのデータベースに存在します。 Service Broker 会話の受信エンドポイントごとに 1 行が含まれます。
sys.sysendpts master データベースにのみ存在します。 サーバー内で作成されたエンドポイントごとに 1 行のデータを格納します。
sys.syswebmethods master データベースにのみ存在します。 サーバーで作成される SOAP 対応 HTTP エンドポイントで定義されている SOAP メソッドごとに 1 行が含まれます。
sys.sysqnames すべてのデータベースに存在します。 各名前空間または修飾名の行を 4 バイト ID トークンに格納します。
sys.sysxmlcomponent すべてのデータベースに存在します。 各行は、XML スキーマ コンポーネントを表します。
sys.sysxmlfacet すべてのデータベースに存在します。 XML 型定義の各 XML ファセット (制限) の行が含まれます。
sys.sysxmlplacement すべてのデータベースに存在します。 XML コンポーネントの XML 配置ごとに 1 行のデータを格納します。
sys.syssingleobjrefs すべてのデータベースに存在します。 一般的な N 対 1 参照ごとに 1 行のデータを格納します。
sys.sysmultiobjrefs すべてのデータベースに存在します。 各一般的な N から N への参照の行が含まれます。
sys.sysobjvalues すべてのデータベースに存在します。 エンティティの一般的な値の各プロパティの行を格納します。
sys.sysguidrefs すべてのデータベースに存在します。 GUID で分類された ID 参照ごとに 1 行のデータを格納します。

システム ベース テーブルの更新

システム テーブル内のデータは、システム カタログ ビューを使用して表示できます。 システム ベース テーブルのメタデータを更新するには、適切な Transact-SQL インターフェイス (DDL ステートメントなど) を使用します。 システム テーブルを手動で更新することはできません。 SQL Server では、システム テーブルに対して直接更新を実行すると、次のメッセージが報告されます。

システム テーブルが手動で更新される

メッセージ 17659: 警告: システム テーブル ID がデータベース ID <<ID>> で直接更新され、キャッシュの一貫性がメインされていない可能性があります。 SQL Server を再起動してください。

手動で更新されたシステム テーブルを使用してデータベースを開始する

メッセージ 3859: 警告: システム カタログは、データベース ID 17 (最近では date_time) で直接更新されました。

システム テーブルが手動で更新された後の DBCC_CHECKDB コマンドの実行

メッセージ 3859: 警告: システム カタログは、データベース ID 17 (最近では date_time) で直接更新されました。

システム テーブルに対して手動で更新を実行し、問題が発生した場合は、バックアップから復元するか、影響を受けるデータベースから新しいデータベースにデータをコピーするように求められる場合があります。 ユーザー アクションのエラー メッセージの詳細を確認します。