Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Użyj FILE_NAME(), aby zwrócić logiczną nazwę pliku dla danego identyfikatora pliku w SQL Server

W SQL Server możesz użyć FILE_NAME() funkcja zwracająca logiczną nazwę pliku z podanego pliku bazy danych.

Aby to zrobić, przekaż identyfikator pliku do funkcji. To jest identyfikator odpowiadający file_id kolumna w sys.master_files widok katalogu lub sys.database_files widok katalogu. Te widoki również zawierają logiczną nazwę pliku, ale FILE_NAME() funkcja pozwala uniknąć konieczności wysyłania zapytań do tych widoków.

Przykład 1 – Podstawowe użycie

Oto krótki przykład do zademonstrowania.

USE WideWorldImportersDW;
SELECT FILE_NAME(1) AS Result;

Wynik:

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

Przykład 2 – Więcej plików

Oto kolejny przykład, tym razem zwracający trzy pliki.

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

Wynik:

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

Przykład 3 – Inna baza danych

W tym przykładzie przełączam się na inną bazę danych, a następnie ponownie uruchamiam zapytanie.

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

Wynik:

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

W tym przypadku nie ma pliku o identyfikatorze 3, więc otrzymuję wynik NULL dla tej kolumny.

Przykład 4 – Korzystanie z sys.database_files

Jak wspomniano, FILE_NAME() funkcja pozwala uniknąć odpytywania sys.database_files lub sys.master_files wyświetlenia. Gdybyśmy nie mieli FILE_NAME() funkcji, prawdopodobnie musielibyśmy zrobić coś takiego:

SELECT name
FROM sys.database_files
WHERE file_id = 2;

Wynik:

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

Przykład 5 – Korzystanie z plików sys.master_files

Jeśli użyliśmy sys.master_files , musielibyśmy dodać trochę kodu, aby określić, która baza danych:

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

Wynik:

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

W tym widoku, jeśli nie określisz identyfikatora bazy danych, otrzymasz wyniki ze wszystkich baz danych. Dlatego określam, która baza danych w WHERE klauzula. W tym przypadku używam DB_ID() funkcja, aby uzyskać nazwę bieżącej bazy danych.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zwróć uprawnienia kolumny z serwera połączonego w programie SQL Server (przykłady T-SQL)

  2. 32-bitowy program Excel i 64-bitowy serwer SQL

  3. Jak zwrócić tylko Date z typu danych DateTime serwera SQL?

  4. lista rozdzielana przecinkami jako pojedynczy ciąg, T-SQL

  5. Jak ręcznie wstawić wartość w kolumnie tożsamości w tabeli SQL Server — samouczek SQL Server / T-SQL, część 41