none
システムテーブルのありか(SQL Server2012) RRS feed

  • 質問

  • SQL Server2012において、(システムテーブルを含む)システムオブジェクトはどこに(物理的に)格納されているのでしょうか?

    (ア)全て、Resource データベース
    (イ)全て、各データベース上のPRIMARYファイルグループ
    (ウ)場合分けされて、Resource データベースと各データベース上のPRIMARYファイルグループに格納される

    のどれか明快な解答をいただけるとありがたいです。((ウ)が正解の場合はその場合分けルールも)

    そもそも上記疑問を感じたのでは、マニュアルの説明文(下記に引用)によると、どちらとも取れるためです。

    ------マニュアルの引用
    ●Resource データベース
    SQL Server システム オブジェクト (sys.objects など) は、物理的には Resource データベースに保存されていますが、すべてのデータベースの sys スキーマに論理的に表示されます。 Resource データベースには、ユーザーのデータやユーザーのメタデータは保持されません。
    ●PRIMARYファイルグループ
    プライマリ ファイルが含まれているファイル グループ。 すべてのシステム テーブルがプライマリ ファイル グループに割り当てられます。

    2014年12月3日 6:08

回答

  • 以下のページが参考になるかと思います。
    https://engineermemo.wordpress.com/2010/11/07/resource-%E3%83%87%E3%83%BC%E3%82%BF%E3%83%99%E3%83%BC%E3%82%B9%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6/

    ちなみに sys.objects はビューですが、ビュー定義は Resource データベースに格納されています。
    その他個別のオブジェクトについては、先のページに確認する手順が記載されていますので、ご自身で確認されるのが間違いないかと思います。


    MCITP(Database Developer/Database Administrator)

    • 回答の候補に設定 星 睦美 2014年12月9日 0:23
    • 回答としてマーク 星 睦美 2014年12月12日 7:35
    2014年12月7日 10:09