システム ベース テーブル

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

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

重要

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

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

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

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

重要

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

システム ベース テーブル

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

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

メッセージの種類

サービス コントラクト

サービス

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

アセンブリ

バックアップ デバイス

フルテキスト カタログ

パーティション関数

パーティション構成

ファイル グループ

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

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

注: サーバーレベルの権限は master データベースに格納されます。
sys.sysowners すべてのデータベースに存在します。 各行は、データベースプリンシパルを表します。
sys.sysobjkeycrypts すべてのデータベースに存在します。 オブジェクトに関連付けられた対称キー、暗号化、または暗号化プロパティごとに1行の値を格納します。
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格納します。
sys.sysdesend すべてのデータベースに存在します。 Service Broker メッセージ交換の送信エンドポイントごとに 1 行のデータを格納します。
sys.sysdercv すべてのデータベースに存在します。 メッセージメッセージの受信エンドポイントごとに 1 行Service Brokerします。
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 への一般的な参照ごとに 1 行のデータを格納します。
sys.sysobjvalues すべてのデータベースに存在します。 エンティティの全般的な値プロパティごとに 1 行のデータを格納します。
sys.sysguidrefs すべてのデータベースに存在します。 GUID で分類された ID 参照ごとに 1 行のデータを格納します。

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

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

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

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

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

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

システム テーブルがDBCC_CHECKDB後にコマンドを実行する

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

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