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