DB_ID (Transact-SQL)

 

本主題適用於:是SQL Server (從 2008 年起)是Azure SQL Database是Azure SQL 資料倉儲 是平行處理資料倉儲

傳回資料庫識別碼。

Topic link icon Transact-SQL 語法慣例

-- Syntax for SQL Server, Azure SQL Database, Azure SQL Data Warehouse, Parallel Data Warehouse  
  
DB_ID ( [ 'database_name' ] )   

'database_name'
這是用來傳回對應資料庫識別碼的資料庫名稱。 database_namesysname。 如果database_name已省略,會傳回目前的資料庫識別碼。

int

如果呼叫端的DB) 識別碼不是資料庫擁有者和資料庫不是主要tempdb,若要查看對應的資料列所需的最低權限為 ALTER ANY DATABASE 或 VIEW ANY DATABASE 伺服器層級權限或在 CREATE DATABASE 權限主要資料庫。 呼叫端所連接的資料庫,永遠可以在 sys.databases中進行檢視。

System_CAPS_ICON_important.jpg 重要


根據預設,public 角色的 VIEW ANY DATABASE 權限,讓所有的登入,以查看資料庫資訊。 若要封鎖能夠偵測到資料庫的登入,撤銷 VIEW ANY DATABASE 權限從公用,或拒絕個別登入的 VIEW ANY DATABASE 權限。

A. 傳回目前資料庫的資料庫識別碼

下列範例會傳回目前資料庫的資料庫識別碼。

SELECT DB_ID() AS [Database ID];  
GO  

B. 傳回指定資料庫的資料庫識別碼

下列範例會傳回資料庫識別碼AdventureWorks2012資料庫。

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

C. 使用 DB_ID 來指定系統函數參數的值

下列範例會使用DB_ID傳回的資料庫識別碼AdventureWorks2012系統函數中的資料庫sys.dm_db _ index _ operational _ stats。 該函數是以資料庫識別碼作為第一個參數。

DECLARE @db_id int;  
DECLARE @object_id int;  
SET @db_id = DB_ID(N'AdventureWorks2012');  
SET @object_id = OBJECT_ID(N'AdventureWorks2012.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  

D. 傳回目前資料庫的識別碼

下列範例會傳回目前資料庫的資料庫識別碼。

SELECT DB_ID();  

E. 傳回具名資料庫的識別碼。

下列範例會傳回 AdventureWorksDW2012 資料庫的資料庫識別碼。

SELECT DB_ID('AdventureWorksPDW2012');  

DB_NAME (TRANSACT-SQL)
中繼資料函數 (TRANSACT-SQL)
sys.databases (TRANSACT-SQL)
sys.dm_db_index_operational_stats (Transact-SQL)

社群新增項目

新增
顯示: