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.