W SQL Server możesz użyć DB_ID() funkcja zwracająca identyfikator bieżącej bazy danych lub innej określonej bazy danych.
Działa to tak, że jako argument podajesz nazwę bazy danych, a następnie funkcja zwróci identyfikator tej bazy danych. Jeśli nie podasz nazwy, zwróci identyfikator bieżącej bazy danych.
Przykład 1 – Zwróć bieżącą bazę danych
Oto podstawowy przykład pokazujący, jak zwrócić nazwę bieżącej bazy danych.
SELECT DB_ID() AS [Current Database];
Wynik:
+--------------------+ | Current Database | |--------------------| | 6 | +--------------------+
W takim przypadku bieżąca baza danych ma identyfikator 6.
Oto kolejny przykład, który jeszcze bardziej to demonstruje, zmieniając bazy danych.
USE Music; SELECT DB_ID() AS [Current Database]; USE EMS; SELECT DB_ID() AS [Current Database]; USE WideWorldImportersDW; SELECT DB_ID() AS [Current Database];
Wynik:
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)
Przykład 2 – Zwróć określoną bazę danych
Oto przykład zwracania konkretnej bazy danych. Odbywa się to poprzez przekazanie nazwy bazy danych.
SELECT DB_ID('Music') AS Result;
Wynik:
+----------+ | Result | |----------| | 5 | +----------+
Oto więcej:
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'];
Wynik:
+----------+----------+---------+--------+---------+--------------------------+ | master | tempdb | model | msdb | Music | 'WideWorldImportersDW' | |----------+----------+---------+--------+---------+--------------------------| | 1 | 2 | 3 | 4 | 5 | 6 | +----------+----------+---------+--------+---------+--------------------------+
Przykład 3 – Zapytanie do bazy danych
Oto przykład, gdzie DB_ID() może się przydać.
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';
Wynik:
Changed database context to 'WideWorldImportersDW'. +--------------------+----------------------+--------------------------+ | Foreign Key | Parent Object Name | Referenced Object Name | |--------------------+----------------------+--------------------------| | FK_Artists_Country | Artists | Country | +--------------------+----------------------+--------------------------+ (1 row affected)
W tym przykładzie bieżąca baza danych to WideWorldImportersDW, ale chcę uzyskać informacje o kluczu obcym w bazie danych Music. OBJECT_NAME() funkcja zwraca nazwę obiektu na podstawie jego identyfikatora, ale jeśli obiekt znajduje się w innej bazie danych, pozwala mi również określić identyfikator bazy danych. Jednak w tym przypadku znam tylko nazwę bazy danych. Nie jest to jednak problem, ponieważ mogę użyć DB_ID() aby zwrócić identyfikator na podstawie nazwiska.