DB_ID (Transact-SQL)
适用于:SQL Server Azure SQL 数据库 Azure SQL 托管实例 Azure Synapse Analytics Analytics Platform System (PDW)
此函数返回指定数据库的数据库标识 (ID) 号。
语法
DB_ID ( [ 'database_name' ] )
参数
'database_name'
将返回其数据库 ID 号 DB_ID
的数据库的名称。 如果对 DB_ID
的调用省略 database_name,则 DB_ID
返回当前数据库的 ID。
返回类型
int
备注
DB_ID
仅可用于返回 Azure SQL 数据库中当前数据库的数据库标识符。 如果指定的数据库名称不是当前数据库,则返回 NULL。
注意
在 Azure SQL 数据库中,DB_ID
不能返回与 sys.databases 和 sys.database_service_objectives 中的 database_id
列相同的值。 这两个视图返回在逻辑服务器中唯一的 database_id
值,而其他系统视图中的 DB_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
权限。
示例
A. 返回当前数据库的数据库 ID
此示例返回当前数据库的数据库 ID。
SELECT DB_ID() AS [Database ID];
GO
B. 返回指定数据库的数据库 ID
此示例返回 AdventureWorks2022
数据库的数据库 ID。
SELECT DB_ID(N'AdventureWorks2008R2') AS [Database ID];
GO
C. 使用 DB_ID 来指定系统函数参数的值
此示例使用 DB_ID
返回系统函数 sys.dm_db_index_operational_stats
中 AdventureWorks2022
数据库的数据库 ID。 此函数将数据库 ID 作为第一个参数。
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 和 Analytics Platform System (PDW)
D. 返回当前数据库的 ID
此示例返回当前数据库的数据库 ID。
SELECT DB_ID();
E. 返回命名数据库的 ID。
此示例返回 AdventureWorksDW2022 数据库的数据库 ID。
SELECT DB_ID('AdventureWorksPDW2012');
另请参阅
DB_NAME (Transact-SQL)
元数据函数 (Transact-SQL)
sys.databases (Transact-SQL)
sys.dm_db_index_operational_stats (Transact-SQL)