Trong SQL Server, bạn có thể sử dụng FILE_NAME()
hàm để trả về tên tệp logic của một tệp cơ sở dữ liệu nhất định.
Để thực hiện việc này, hãy chuyển ID tệp vào hàm. Đây là ID tương ứng với file_id
trong sys.master_files
chế độ xem danh mục hoặc sys.database_files
xem danh mục. Các dạng xem đó cũng chứa tên tệp logic, nhưng FILE_NAME()
hàm giúp bạn không phải truy vấn các chế độ xem đó.
Ví dụ 1 - Cách sử dụng cơ bản
Dưới đây là một ví dụ nhanh để chứng minh.
USE WideWorldImportersDW; SELECT FILE_NAME(1) AS Result;
Kết quả:
+-------------+ | Result | |-------------| | WWI_Primary | +-------------+
Ví dụ 2 - Thêm tệp
Đây là một ví dụ khác, lần này trả về ba tệp.
USE WideWorldImportersDW; SELECT FILE_NAME(1) AS [File 1], FILE_NAME(2) AS [File 2], FILE_NAME(3) AS [File 3];
Kết quả:
+-------------+----------+--------------+ | File 1 | File 2 | File 3 | |-------------+----------+--------------| | WWI_Primary | WWI_Log | WWI_UserData | +-------------+----------+--------------+
Ví dụ 3 - Cơ sở dữ liệu khác nhau
Trong ví dụ này, tôi chuyển sang một cơ sở dữ liệu khác, sau đó chạy lại truy vấn.
USE Music; SELECT FILE_NAME(1) AS [File 1], FILE_NAME(2) AS [File 2], FILE_NAME(3) AS [File 3];
Kết quả:
+----------+-----------+----------+ | File 1 | File 2 | File 3 | |----------+-----------+----------| | Music | Music_log | NULL | +----------+-----------+----------+
Trong trường hợp này, không có tệp nào có ID là 3, vì vậy tôi nhận được kết quả NULL cho cột đó.
Ví dụ 4 - Sử dụng sys.database_files
Như đã đề cập, FILE_NAME()
hàm giúp bạn không phải truy vấn sys.database_files
hoặc sys.master_files
lượt xem. Nếu chúng tôi không có FILE_NAME()
chức năng, chúng tôi có thể phải làm một cái gì đó như sau:
SELECT name FROM sys.database_files WHERE file_id = 2;
Kết quả:
+-----------+ | name | |-----------| | Music_log | +-----------+
Ví dụ 5 - Sử dụng sys.master_files
Nếu chúng tôi đã sử dụng sys.master_files
, chúng tôi cần thêm một số mã để chỉ định cơ sở dữ liệu nào:
SELECT name FROM sys.master_files WHERE file_id = 2 AND database_id = DB_ID();
Kết quả:
+-----------+ | name | |-----------| | Music_log | +-----------+
Với chế độ xem này, nếu bạn không chỉ định ID cơ sở dữ liệu, bạn sẽ nhận được kết quả từ tất cả các cơ sở dữ liệu. Do đó, tôi chỉ định cơ sở dữ liệu nào trong WHERE
mệnh đề. Trong trường hợp này, tôi sử dụng DB_ID()
hàm để lấy tên của cơ sở dữ liệu hiện tại.