V SQL Server můžete použít DB_ID() funkce pro vrácení ID aktuální databáze nebo jiné zadané databáze.
Funguje to tak, že předáte název databáze jako argument a pak funkce vrátí ID této databáze. Pokud nezadáte jméno, vrátí ID aktuální databáze.
Příklad 1 – Návrat aktuální databáze
Zde je základní příklad, který demonstruje, jak vrátit název aktuální databáze.
SELECT DB_ID() AS [Current Database];
Výsledek:
+--------------------+ | Current Database | |--------------------| | 6 | +--------------------+
V tomto případě má aktuální databáze ID 6.
Zde je další příklad, který to dále demonstruje přepínáním databází.
USE Music; SELECT DB_ID() AS [Current Database]; USE EMS; SELECT DB_ID() AS [Current Database]; USE WideWorldImportersDW; SELECT DB_ID() AS [Current Database];
Výsledek:
Changed database context to 'Music'. +--------------------+ | Current Database | |--------------------| | 5 | +--------------------+ (1 row affected) Changed database context to 'EMS'. +--------------------+ | Current Database | |--------------------| | 14 | +--------------------+ (1 row affected) Changed database context to 'WideWorldImportersDW'. +--------------------+ | Current Database | |--------------------| | 6 | +--------------------+ (1 row affected)
Příklad 2 – Vrácení konkrétní databáze
Zde je příklad vrácení konkrétní databáze. To se provádí předáním názvu databáze.
SELECT DB_ID('Music') AS Result;
Výsledek:
+----------+ | Result | |----------| | 5 | +----------+
Zde je více:
SELECT
DB_ID('master') AS [master],
DB_ID('tempdb') AS [tempdb],
DB_ID('model') AS [model],
DB_ID('msdb') AS [msdb],
DB_ID('Music') AS [Music],
DB_ID('WideWorldImportersDW') AS ['WideWorldImportersDW'];
Výsledek:
+----------+----------+---------+--------+---------+--------------------------+ | master | tempdb | model | msdb | Music | 'WideWorldImportersDW' | |----------+----------+---------+--------+---------+--------------------------| | 1 | 2 | 3 | 4 | 5 | 6 | +----------+----------+---------+--------+---------+--------------------------+
Příklad 3 – Databázový dotaz
Zde je příklad, kde DB_ID() by se mohlo hodit.
USE WideWorldImportersDW;
SELECT
name AS [Foreign Key],
OBJECT_NAME(parent_object_id, DB_ID('Music')) AS [Parent Object Name],
OBJECT_NAME(referenced_object_id, DB_ID('Music')) AS [Referenced Object Name]
FROM Music.sys.foreign_keys
WHERE name = 'FK_Artists_Country';
Výsledek:
Changed database context to 'WideWorldImportersDW'. +--------------------+----------------------+--------------------------+ | Foreign Key | Parent Object Name | Referenced Object Name | |--------------------+----------------------+--------------------------| | FK_Artists_Country | Artists | Country | +--------------------+----------------------+--------------------------+ (1 row affected)
V tomto příkladu je aktuální databáze WideWorldImportersDW, ale chci informace o cizím klíči v databázi Music. OBJECT_NAME() Funkce vrací název objektu na základě jeho ID, ale pokud je objekt v jiné databázi, umožňuje mi také zadat ID databáze. V tomto případě však znám pouze název databáze. To však není problém, protože mohu použít DB_ID() vrátit ID na základě jména.