В SQL Server можете да използвате DB_ID()
функция за връщане на идентификатора на текущата база данни или друга определена база данни.
Начинът, по който работи, е, че предавате името на базата данни като аргумент и след това функцията ще върне идентификатора на тази база данни. Ако не подадете име, то ще върне идентификатора на текущата база данни.
Пример 1 – Връщане на текущата база данни
Ето основен пример, за да демонстрирате как да върнете името на текущата база данни.
SELECT DB_ID() AS [Current Database];
Резултат:
+--------------------+ | Current Database | |--------------------| | 6 | +--------------------+
В този случай текущата база данни има идентификатор 6.
Ето още един пример, който го демонстрира допълнително, чрез превключване на бази данни.
USE Music; SELECT DB_ID() AS [Current Database]; USE EMS; SELECT DB_ID() AS [Current Database]; USE WideWorldImportersDW; SELECT DB_ID() AS [Current Database];
Резултат:
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)
Пример 2 – Връщане на конкретна база данни
Ето пример за връщане на конкретна база данни. Това става чрез подаване на името на базата данни.
SELECT DB_ID('Music') AS Result;
Резултат:
+----------+ | Result | |----------| | 5 | +----------+
Ето още:
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'];
Резултат:
+----------+----------+---------+--------+---------+--------------------------+ | master | tempdb | model | msdb | Music | 'WideWorldImportersDW' | |----------+----------+---------+--------+---------+--------------------------| | 1 | 2 | 3 | 4 | 5 | 6 | +----------+----------+---------+--------+---------+--------------------------+
Пример 3 – Заявка за база данни
Ето пример за това къде DB_ID()
може да е полезно.
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';
Резултат:
Changed database context to 'WideWorldImportersDW'. +--------------------+----------------------+--------------------------+ | Foreign Key | Parent Object Name | Referenced Object Name | |--------------------+----------------------+--------------------------| | FK_Artists_Country | Artists | Country | +--------------------+----------------------+--------------------------+ (1 row affected)
В този пример текущата база данни е WideWorldImportersDW, но искам информация за външен ключ в базата данни за музика. OBJECT_NAME()
функцията връща името на обекта въз основа на неговия идентификатор, но ако обектът е в друга база данни, тя също ми позволява да посоча идентификатора на базата данни. В този случай обаче знам само името на базата данни. Не е проблем обаче, защото мога да използвам DB_ID()
за да върнете идентификатора въз основа на името.