Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Използвайте FILE_NAME(), за да върнете логическото име на файл за даден идентификатор на файл в SQL Server

В SQL Server можете да използвате FILE_NAME() функция за връщане на логическото име на файл на даден файл на базата данни.

За да направите това, предайте идентификатора на файла на функцията. Това е идентификаторът, който съответства на file_id колона в sys.master_files изглед на каталог или sys.database_files изглед на каталог. Тези изгледи също съдържат логическото име на файла, но FILE_NAME() функцията ви спестява от необходимостта да заявявате тези изгледи.

Пример 1 – Основна употреба

Ето един бърз пример за демонстрация.

USE WideWorldImportersDW;
SELECT FILE_NAME(1) AS Result;

Резултат:

+-------------+
| Result      |
|-------------|
| WWI_Primary |
+-------------+

Пример 2 – Още файлове

Ето още един пример, този път връща три файла.

USE WideWorldImportersDW;
SELECT 
  FILE_NAME(1) AS [File 1], 
  FILE_NAME(2) AS [File 2], 
  FILE_NAME(3) AS [File 3];

Резултат:

+-------------+----------+--------------+
| File 1      | File 2   | File 3       |
|-------------+----------+--------------|
| WWI_Primary | WWI_Log  | WWI_UserData |
+-------------+----------+--------------+

Пример 3 – Различна база данни

В този пример преминавам към друга база данни, след което стартирам заявката отново.

USE Music;
SELECT 
  FILE_NAME(1) AS [File 1], 
  FILE_NAME(2) AS [File 2], 
  FILE_NAME(3) AS [File 3];

Резултат:

+----------+-----------+----------+
| File 1   | File 2    | File 3   |
|----------+-----------+----------|
| Music    | Music_log | NULL     |
+----------+-----------+----------+

В този случай няма файл с идентификатор 3, така че получавам резултат NULL за тази колона.

Пример 4 – Използване на sys.database_files

Както споменахме, FILE_NAME() функцията ви спестява от необходимостта да заявявате sys.database_files или sys.master_files изгледи. Ако не разполагахме с FILE_NAME() функция, вероятно ще трябва да направим нещо подобно:

SELECT name
FROM sys.database_files
WHERE file_id = 2;

Резултат:

+-----------+
| name      |
|-----------|
| Music_log |
+-----------+

Пример 5 – Използване на sys.master_files

Ако използвахме sys.master_files , ще трябва да добавим някакъв код, за да посочим коя база данни:

SELECT name 
FROM sys.master_files
WHERE file_id = 2
AND database_id = DB_ID();

Резултат:

+-----------+
| name      |
|-----------|
| Music_log |
+-----------+

С този изглед, ако не посочите идентификатора на базата данни, ще получите резултати от всички бази данни. Затова посочвам коя база данни в WHERE клауза. В този случай използвам DB_ID() функция, за да получите името на текущата база данни.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Неочакван тип променлива, върнат от Receive-Job

  2. LEFT() срещу SUBSTRING() в SQL Server:Каква е разликата?

  3. Как работи функцията QUOTENAME() в SQL Server (T-SQL)

  4. Използване на Intel Optane Storage за SQL Server

  5. Използване на SQL Server като хранилище за изображения