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