SQL Serverでは、FILE_NAME()
を使用できます 指定されたデータベースファイルの論理ファイル名を返す関数。
これを行うには、ファイルIDを関数に渡します。これは、file_id
に対応するIDです。 sys.master_files
の列 カタログビューまたはsys.database_files
カタログビュー。これらのビューには論理ファイル名も含まれていますが、FILE_NAME()
関数を使用すると、これらのビューをクエリする必要がなくなります。
例1-基本的な使用法
簡単な例を次に示します。
USE WideWorldImportersDW; SELECT FILE_NAME(1) AS Result;
結果:
+-------------+ | Result | |-------------| | WWI_Primary | +-------------+
例2–その他のファイル
別の例を次に示します。今回は3つのファイルを返します。
USE WideWorldImportersDW; SELECT FILE_NAME(1) AS [File 1], FILE_NAME(2) AS [File 2], FILE_NAME(3) AS [File 3];
結果:
+-------------+----------+--------------+ | File 1 | File 2 | File 3 | |-------------+----------+--------------| | WWI_Primary | WWI_Log | WWI_UserData | +-------------+----------+--------------+
例3–別のデータベース
この例では、別のデータベースに切り替えてから、クエリを再実行します。
USE Music; SELECT FILE_NAME(1) AS [File 1], FILE_NAME(2) AS [File 2], FILE_NAME(3) AS [File 3];
結果:
+----------+-----------+----------+ | File 1 | File 2 | File 3 | |----------+-----------+----------| | Music | Music_log | NULL | +----------+-----------+----------+
この場合、IDが3のファイルがないため、その列の結果はNULLになります。
例4–sys.database_filesの使用
前述のように、FILE_NAME()
関数を使用すると、sys.database_files
を照会する必要がなくなります。 またはsys.master_files
ビュー。 FILE_NAME()
がなかった場合 関数の場合、おそらく次のようなことをする必要があります:
SELECT name FROM sys.database_files WHERE file_id = 2;
結果:
+-----------+ | name | |-----------| | Music_log | +-----------+
例5–sys.master_filesの使用
sys.master_files
を使用した場合 、どのデータベースを指定するためのコードを追加する必要があります:
SELECT name FROM sys.master_files WHERE file_id = 2 AND database_id = DB_ID();
結果:
+-----------+ | name | |-----------| | Music_log | +-----------+
このビューでは、データベースIDを指定しない場合、すべてのデータベースから結果を取得できます。したがって、WHERE
でどのデータベースを指定しますか 句。この場合、DB_ID()
を使用します 現在のデータベースの名前を取得する関数。