Dela via


DB_ID (Transact-SQL)

Gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalysplattformssystem (PDW)SQL-analysslutpunkt i Microsoft FabricLager i Microsoft FabricSQL-databas i Förhandsversion av Microsoft Fabric

Den här funktionen returnerar databasidentifieringsnumret (ID) för en angiven databas.

Transact-SQL syntaxkonventioner

Syntax

DB_ID ( [ 'database_name' ] )   

Argumentpunkter

"database_name"
Namnet på databasen vars databas-ID-nummer DB_ID returneras. Om anropet till DB_ID utelämnar database_nameDB_ID returnerar ID för den aktuella databasen.

Returtyper

int

Anmärkningar

DB_ID kan endast användas för att returnera databasidentifieraren för den aktuella databasen i Azure SQL Database. NULL returneras om det angivna databasnamnet är annat än den aktuella databasen.

Anmärkning

I Azure SQL Database DB_ID kanske inte returnerar samma värde som database_id kolumnen i sys.databases och sys.database_service_objectives. Dessa två vyer returnerar database_id värden som är unika inom den logiska servern, medan DB_ID kolumnen database_id i andra systemvyer returnerar värden som är unika i en enskild databas eller i en elastisk pool.

Behörigheter

Om anroparen av DB_ID inte äger en specifik icke-huvuddatabas eller icke-tempdb-databas eller ALTER ANY DATABASEVIEW ANY DATABASE behörigheter på servernivå krävs minst för att se motsvarande DB_ID rad. För huvuddatabasenDB_ID behöver CREATE DATABASE du minst behörighet. Den databas som anroparen ansluter till visas alltid i sys.databases.

Viktigt!

Som standard har den offentliga rollen behörigheten VIEW ANY DATABASE , vilket gör att alla inloggningar kan se databasinformation. För att förhindra att en inloggning identifierar en databas, REVOKE behörigheten VIEW ANY DATABASE från offentlig eller DENY behörigheten VIEW ANY DATABASE för enskilda inloggningar.

Exempel

A. Returnera databas-ID för den aktuella databasen

Det här exemplet returnerar databas-ID för den aktuella databasen.

SELECT DB_ID() AS [Database ID];  
GO  

B. Returnera databas-ID för en angiven databas

Det här exemplet returnerar databasens AdventureWorks2022 databas-ID.

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

C. Använda DB_ID för att ange värdet för en systemfunktionsparameter

I det här exemplet används DB_ID för att returnera databas-ID:t för AdventureWorks2022 databasen i systemfunktionen sys.dm_db_index_operational_stats. Funktionen tar ett databas-ID som den första parametern.

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  

Exempel: Azure Synapse Analytics and Analytics Platform System (PDW)

D. Returnera ID för den aktuella databasen

Det här exemplet returnerar databas-ID för den aktuella databasen.

SELECT DB_ID();  

E. Returnera ID för en namngiven databas.

Det här exemplet returnerar databas-ID för databasen AdventureWorksDW2022.

SELECT DB_ID('AdventureWorksPDW2012');  

Se även

DB_NAME (Transact-SQL)
Metadata functions (Transact-SQL)
sys.databases (Transact-SQL)
sys.dm_db_index_operational_stats (Transact-SQL)