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

FILE_NAME()を使用して、SQLServerで指定されたファイルIDの論理ファイル名を返します

    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()を使用します 現在のデータベースの名前を取得する関数。


    1. MySQLのテキスト列内の文字列を検索します

    2. Oracle:シーケンスMySequence.currvalはこのセッションではまだ定義されていません

    3. Oracleで可能な最大の日付を取得するにはどうすればよいですか?

    4. SQLの複数の列を更新する