Поделиться через


DB_ID (Transact-SQL)

Применимо: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure azure Synapse Analytics Analytics Platform System (PDW)

Эта функция возвращает идентификационный номер указанной базы данных.

Соглашения о синтаксисе Transact-SQL

Синтаксис

DB_ID ( [ 'database_name' ] )   

Аргументы

'database_name'
Имя базы данных, идентификационный номер которой вернет функция DB_ID. Если в вызове DB_ID аргумент database_name не указан, функция DB_ID возвращает идентификатор текущей базы данных.

Типы возвращаемых данных

int

Замечания

DB_ID может использоваться только для возврата идентификатора текущей базы данных в Базе данных SQL Azure. Если указанное имя базы данных отличается от текущей базы данных, возвращается значение NULL.

Примечание.

В База данных SQL Azure может не возвращать то же значение, DB_ID что database_id и столбец в sys.database и sys.database_service_objectives. Эти два представления возвращают уникальные значения в логическом сервере, а DB_ID database_id столбец в других системных представлениях возвращает database_id значения, уникальные в пределах одной базы данных или в эластичном пуле.

Разрешения

Если участник, вызывающий DB_ID, не является владельцем конкретной базы данных, отличной от базы данных master или tempdb, то минимальными разрешениями, необходимыми для просмотра соответствующей строки DB_ID, являются разрешения уровня сервера ALTER ANY DATABASE или VIEW ANY DATABASE. Для базы данных master функция DB_ID требует по крайней мере разрешения CREATE DATABASE. База данных, к которой подключается вызывающий участник, всегда отображается в представлении sys.databases.

Внимание

По умолчанию общедоступная роль имеет разрешение VIEW ANY DATABASE, что позволяет всем именам для входа просматривать информацию в базе данных. Чтобы имя для входа не могло обнаруживать базу данных, отзовите общедоступное разрешение VIEW ANY DATABASE с помощью инструкции REVOKE или отмените разрешение VIEW ANY DATABASE для отдельных имен для входа с помощью инструкции DENY.

Примеры

А. Возвращение идентификатора текущей базы данных

В приведенном ниже примере возвращается идентификатор текущей базы данных.

SELECT DB_ID() AS [Database ID];  
GO  

B. Возвращение идентификатора указанной базы данных

В приведенном ниже примере возвращается идентификатор базы данных AdventureWorks2022.

SELECT DB_ID(N'AdventureWorks2008R2') AS [Database ID];  
GO  

C. Использование DB_ID для указания значения параметра системной функции

В приведенном ниже примере функция DB_ID используется для получения идентификатора базы данных AdventureWorks2022 в системной функции sys.dm_db_index_operational_stats. Эта функция принимает идентификатор базы данных в качестве первого параметра.

DECLARE @db_id INT;  
DECLARE @object_id INT;  
SET @db_id = DB_ID(N'AdventureWorks2022');  
SET @object_id = OBJECT_ID(N'AdventureWorks2022.Person.Address');  
IF @db_id IS NULL   
  BEGIN;  
    PRINT N'Invalid database';  
  END;  
ELSE IF @object_id IS NULL  
  BEGIN;  
    PRINT N'Invalid object';  
  END;  
ELSE  
  BEGIN;  
    SELECT * FROM sys.dm_db_index_operational_stats(@db_id, @object_id, NULL, NULL);  
  END;  
GO  

Примеры: Azure Synapse Analytics и система платформы аналитики (PDW)

D. Получение идентификатора текущей базы данных

В приведенном ниже примере возвращается идентификатор текущей базы данных.

SELECT DB_ID();  

Е. Получение идентификатора именованной базы данных

В этом примере возвращается идентификатор базы данных базы данных базы данных AdventureWorksDW2022.

SELECT DB_ID('AdventureWorksPDW2012');  

См. также

DB_NAME (Transact-SQL)
Функции метаданных (Transact-SQL)
sys.databases (Transact-SQL)
sys.dm_db_index_operational_stats (Transact-SQL)