V SQL Server můžete použít FILE_NAME()
funkce, která vrátí název logického souboru daného databázového souboru.
Chcete-li to provést, předejte funkci ID souboru. Toto je ID, které odpovídá file_id
ve sloupci sys.master_files
zobrazení katalogu nebo sys.database_files
zobrazení katalogu. Tyto pohledy také obsahují název logického souboru, ale FILE_NAME()
Tato funkce vás ušetří od dotazování na tato zobrazení.
Příklad 1 – Základní použití
Zde je rychlý příklad k demonstraci.
USE WideWorldImportersDW; SELECT FILE_NAME(1) AS Result;
Výsledek:
+-------------+ | Result | |-------------| | WWI_Primary | +-------------+
Příklad 2 – Více souborů
Zde je další příklad, tentokrát vrací tři soubory.
USE WideWorldImportersDW; SELECT FILE_NAME(1) AS [File 1], FILE_NAME(2) AS [File 2], FILE_NAME(3) AS [File 3];
Výsledek:
+-------------+----------+--------------+ | File 1 | File 2 | File 3 | |-------------+----------+--------------| | WWI_Primary | WWI_Log | WWI_UserData | +-------------+----------+--------------+
Příklad 3 – Jiná databáze
V tomto příkladu přepnu do jiné databáze a poté znovu spustím dotaz.
USE Music; SELECT FILE_NAME(1) AS [File 1], FILE_NAME(2) AS [File 2], FILE_NAME(3) AS [File 3];
Výsledek:
+----------+-----------+----------+ | File 1 | File 2 | File 3 | |----------+-----------+----------| | Music | Music_log | NULL | +----------+-----------+----------+
V tomto případě neexistuje žádný soubor s ID 3, takže pro tento sloupec dostanu výsledek NULL.
Příklad 4 – Použití sys.database_files
Jak již bylo zmíněno, FILE_NAME()
funkce vám ušetří nutnost dotazovat se na sys.database_files
nebo sys.master_files
pohledy. Pokud bychom neměli FILE_NAME()
funkce, pravděpodobně bychom museli udělat něco takového:
SELECT name FROM sys.database_files WHERE file_id = 2;
Výsledek:
+-----------+ | name | |-----------| | Music_log | +-----------+
Příklad 5 – Použití sys.master_files
Pokud bychom použili sys.master_files
, museli bychom přidat nějaký kód, abychom určili, která databáze:
SELECT name FROM sys.master_files WHERE file_id = 2 AND database_id = DB_ID();
Výsledek:
+-----------+ | name | |-----------| | Music_log | +-----------+
Pokud v tomto zobrazení nezadáte ID databáze, získáte výsledky ze všech databází. Proto specifikuji kterou databázi v WHERE
doložka. V tomto případě používám DB_ID()
funkce pro získání názvu aktuální databáze.