适用于:SQL Server
Azure SQL 数据库
Azure SQL 托管实例
Azure Synapse Analytics
分析平台系统(PDW)
Microsoft Fabric 中的 SQL 分析终结点
Microsoft Fabric 中的仓库
Microsoft Fabric 预览版中的 SQL 数据库
此函数返回指定数据库的数据库标识 (ID) 号。
语法
DB_ID ( [ 'database_name' ] )
参数
'database_name'
将返回其数据库 ID 号 DB_ID
的数据库的名称。 如果对 DB_ID
的调用省略 database_name,则 返回当前数据库的 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
返回系统函数 AdventureWorks2022
中 sys.dm_db_index_operational_stats
数据库的数据库 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)