Di SQL Server, Anda dapat menggunakan FILE_IDEX()
fungsi untuk mengembalikan ID dari file database yang diberikan.
Untuk melakukannya, berikan nama file logis dari file database ke fungsi. Ini adalah nama yang sesuai dengan name
kolom di sys.master_files
tampilan katalog atau sys.database_files
tampilan katalog. Tampilan tersebut juga berisi ID file, tetapi FILE_NAME()
menyelamatkan Anda dari keharusan menanyakan tampilan tersebut.
Contoh 1 – Penggunaan Dasar
Berikut contoh cepat untuk ditunjukkan.
USE WideWorldImportersDW; SELECT FILE_IDEX('WWI_Primary') AS Result;
Hasil:
+----------+ | Result | |----------| | 1 | +----------+
Contoh 2 – Lebih Banyak File
Ini contoh lain, kali ini mengembalikan tiga file.
USE WideWorldImportersDW; SELECT FILE_IDEX('WWI_Primary') AS WWI_Primary, FILE_IDEX('WWI_Log') AS WWI_Log, FILE_IDEX('WWI_UserData') AS WWI_UserData;
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_IDEX('Music') AS Music, FILE_IDEX('Music_Log') AS Music_Log, FILE_IDEX('Music_UserData') AS Music_UserData;
Hasil:
+---------+-------------+------------------+ | Music | Music_Log | Music_UserData | |---------+-------------+------------------| | 1 | 2 | NULL | +---------+-------------+------------------+
Nama file berbeda untuk database ini. Juga, untuk kolom ketiga, tidak ada file dengan nama itu, jadi kami mendapatkan hasil NULL.
Contoh 4 – Menggunakan sys.database_files
Seperti disebutkan, FILE_IDEX()
fungsi menyelamatkan Anda dari keharusan menanyakan sys.database_files
atau sys.master_files
dilihat. Jika kita tidak memiliki FILE_IDEX()
fungsi, kita harus melakukan sesuatu seperti ini:
USE WideWorldImportersDW; SELECT file_id FROM sys.database_files WHERE name = 'WWI_Primary';
Hasil:
+-----------+ | file_id | |-----------| | 1 | +-----------+
Contoh 5 – Menggunakan sys.master_files
Berikut adalah kueri serupa untuk sys.master_files
:
SELECT file_id FROM sys.master_files WHERE name = 'WWI_Primary' AND database_id = DB_ID();
Hasil:
+-----------+ | file_id | |-----------| | 1 | +-----------+
Tampilan ini adalah tampilan seluruh sistem dan dapat mengembalikan data dari semua database. Oleh karena itu, saya menambahkan database saat ini (dengan menggunakan DB_ID()
) ke dalam WHERE
. kueri klausa.