1. ホーム
  2. sql-server

[解決済み] SQL Server: sys.master_files vs. sys.database_files

2022-02-09 05:39:24

質問

sys.master_filesとsys.database_filesの違いは何ですか?私のインスタンスには約20のデータベースがありますが、sys.master_filesにクエリを実行すると、行を受信しません。なぜですか?sys.database_filesに問い合わせると、現在のデータベースに関するデータベースファイルについての情報が得られます。

どうすればいいですか?

sys.master_files :

データベースのファイルごとの行が含まれている マスターデータベースに格納されている これは は、単一のシステム全体のビューです。

sys.database_files :

データベース自体に格納されている、データベースの1ファイルあたりの行を含む。これはデータベースごとのビューです。

だから SELECT * FROM sys.master_files はインスタンス内の各データベースのファイルをリストアップするのに対し SELECT * FROM sys.database_files は、特定のデータベースコンテキストのファイルをリストアップします。

ここでテストしてみると(SQL 2K8)、上記のように動作するのですね。

更新してください。 sys.master_filesの行が表示されない場合、BOLが言うようにパーミッションの問題である可能性があります。

最低限必要なパーミッションは 対応する行を表示するために必要な は、CREATE DATABASE、ALTER ANY DATABASE、または VIEW ANY DEFINITION のいずれかです。

一方、sys.database_filesでは、publicロールのメンバーシップが必要なだけです。