Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Gunakan FILE_IDEX() untuk Mengembalikan ID File Database di SQL Server

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.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Menyebarkan Grup Ketersediaan SQL Server AlwaysOn di Linux

  2. Alternatif SQL Server Management Studio untuk menelusuri/mengedit tabel dan menjalankan kueri

  3. Prosedur tersimpan - kembalikan identitas sebagai parameter keluaran atau skalar

  4. Mendapatkan data dengan rangkaian karakter UTF-8 dari server MSSQL menggunakan ekstensi PHP FreeTDS

  5. SQL Server 2016:Buat Tabel