Di SQL Server, Anda dapat menggunakan FILE_NAME()
fungsi untuk mengembalikan nama file logis dari file database yang diberikan.
Untuk melakukan ini, berikan ID file ke fungsi. Ini adalah ID yang sesuai dengan file_id
kolom di sys.master_files
tampilan katalog atau sys.database_files
tampilan katalog. Tampilan tersebut juga berisi nama file logis, tetapi FILE_NAME()
fungsi menyelamatkan Anda dari keharusan menanyakan tampilan tersebut.
Contoh 1 – Penggunaan Dasar
Berikut contoh cepat untuk ditunjukkan.
USE WideWorldImportersDW; SELECT FILE_NAME(1) AS Result;
Hasil:
+-------------+ | Result | |-------------| | WWI_Primary | +-------------+
Contoh 2 – Lebih Banyak File
Ini contoh lain, kali ini mengembalikan tiga file.
USE WideWorldImportersDW; SELECT FILE_NAME(1) AS [File 1], FILE_NAME(2) AS [File 2], FILE_NAME(3) AS [File 3];
Hasil:
+-------------+----------+--------------+ | File 1 | File 2 | File 3 | |-------------+----------+--------------| | WWI_Primary | WWI_Log | WWI_UserData | +-------------+----------+--------------+
Contoh 3 – Basis Data Berbeda
Dalam contoh ini saya beralih ke database lain, lalu menjalankan kueri lagi.
USE Music; SELECT FILE_NAME(1) AS [File 1], FILE_NAME(2) AS [File 2], FILE_NAME(3) AS [File 3];
Hasil:
+----------+-----------+----------+ | File 1 | File 2 | File 3 | |----------+-----------+----------| | Music | Music_log | NULL | +----------+-----------+----------+
Dalam hal ini, tidak ada file dengan ID 3, jadi saya mendapatkan hasil NULL untuk kolom itu.
Contoh 4 – Menggunakan sys.database_files
Seperti disebutkan, FILE_NAME()
fungsi menyelamatkan Anda dari keharusan menanyakan sys.database_files
atau sys.master_files
dilihat. Jika kami tidak memiliki FILE_NAME()
fungsi, kita mungkin harus melakukan sesuatu seperti ini:
SELECT name FROM sys.database_files WHERE file_id = 2;
Hasil:
+-----------+ | name | |-----------| | Music_log | +-----------+
Contoh 5 – Menggunakan sys.master_files
Jika kita menggunakan sys.master_files
, kita perlu menambahkan beberapa kode untuk menentukan database mana:
SELECT name FROM sys.master_files WHERE file_id = 2 AND database_id = DB_ID();
Hasil:
+-----------+ | name | |-----------| | Music_log | +-----------+
Dengan tampilan ini, jika Anda tidak menentukan ID database, Anda akan mendapatkan hasil dari semua database. Oleh karena itu saya tentukan database yang mana di WHERE
ayat. Dalam hal ini saya menggunakan DB_ID()
fungsi untuk mendapatkan nama database saat ini.