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
В приведенном ниже примере возвращается идентификатор базы данных AdventureWorks2022
.
SELECT DB_ID(N'AdventureWorks2008R2') AS [Database ID];
GO
В приведенном ниже примере функция 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
В приведенном ниже примере возвращается идентификатор текущей базы данных.
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)