システム ベース テーブル

適用対象:SQL Server (サポートされているすべてのバージョン)

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

重要

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

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

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

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

重要

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

システム ベース テーブル

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

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

メッセージの種類

サービス コントラクト

サービス

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

アセンブリ

バックアップ デバイス

フルテキスト カタログ

パーティション関数

パーティション構成

ファイル グループ

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

注: すべてのインデックス (ヒープを除く) は、インデックスと同じ名前の統計に関連付けられます。
sys.sysiscols すべてのデータベースに存在します。 永続化された各インデックスと統計列の行が含まれます。
sys.sysscalartypes すべてのデータベースに存在します。 ユーザー定義型またはシステム型ごとに行が含まれます。
sys.sysdbreg master データベースにのみ存在します。 登録されたデータベースごとに 1 行のデータを格納します。
sys.sysxsrvs master データベースにのみ存在します。 ローカル サーバー、リンク サーバー、またはリモート サーバーごとに 1 行のデータを格納します。
sys.sysrmtlgns このシステム ベース テーブルは 、マスター データベースにのみ存在します。 各リモート ログイン マッピングの行が含まれます。 対応するサーバーから送信されてきたと称する受信ログインを、実際のローカル ログインにマップするために使用します。
sys.syslnklgns master データベースにのみ存在します。 リンク ログイン マッピングごとに 1 行のデータを格納します。 リンク されたログイン マッピングは、ローカル サーバーから対応するリンク サーバーに出力されるリモート プロシージャ コールと分散クエリによって使用されます。
sys.sysxlgns master データベースにのみ存在します。 各サーバー プリンシパルの行が含まれます。
sys.sysdbfiles すべてのデータベースに存在します。 列 dbid が 0 の場合、行はこのデータベースに属するファイルを表します。 マスター データベースでは、列 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 すべてのデータベースに存在します。 エンティティの一般的な値プロパティごとに 1 行を格納します。
sys.sysguidrefs すべてのデータベースに存在します。 GUID で分類された ID 参照ごとに 1 行のデータを格納します。

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

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

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

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

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

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

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

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

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