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


DB_ID (Transact-SQL)

Применимо к:SQL ServerБаза данных Azure SQLУправляемый экземпляр Azure SQLAzure Synapse AnalyticsСистема платформы аналитики (PDW)Конечная точка аналитики SQL в Microsoft FabricХранилище в Microsoft FabricБаза данных SQL в предварительном просмотре Microsoft Fabric

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

Соглашения о синтаксисе 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. Эти два представления возвращают уникальные значения в логическом сервере, а database_idDB_ID столбец в других системных представлениях возвращает database_id значения, уникальные в пределах одной базы данных или в эластичном пуле.

Разрешения

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

Внимание

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

Примеры

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

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

SELECT DB_ID() AS [Database ID];  
GO  

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

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

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

В. Использование 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)