sql >> データベース >  >> RDS >> Sqlserver

FILE_IDEX()を使用して、SQLServerのデータベースファイルのIDを返します。

    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 条項。


    1. SQLServerのユーザー定義関数

    2. 断片化が実行計画に与える影響

    3. Firebaseの概要

    4. SQL Server(T-SQL)でクエリ結果を添付ファイルとして電子メールで送信する方法