Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Sử dụng FILE_NAME () để trả lại tên tệp logic cho một ID tệp đã cho trong SQL Server

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.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Giới thiệu về bảng tạm thời trong SQL Server

  2. Tôi có thể đặt một lược đồ mặc định cho trong một quy trình được lưu trữ không?

  3. Cách tạo cơ sở dữ liệu trong SQL Server bằng TSQL hoặc GUI - Hướng dẫn SQL Server / TSQL Phần 24

  4. Kiểm tra Thư chưa gửi trong SQL Server (T-SQL)

  5. Các ký tự không phải số trả về số dương khi sử dụng ISNUMERIC () trong SQL Server