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.