Delen via


DB_ID (Transact-SQL)

Van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL Analytics-eindpunt in Microsoft FabricMagazijn in Microsoft FabricSQL-database in Microsoft Fabric Preview

Met deze functie wordt het id-nummer (databaseidentificatie) van een opgegeven database geretourneerd.

Transact-SQL syntaxis-conventies

Syntaxis

DB_ID ( [ 'database_name' ] )   

Argumenten

'database_name'
De naam van de database waarvan het database-id-nummer DB_ID wordt geretourneerd. Als de aanroep om database_name weg te DB_ID laten, DB_ID wordt de id van de huidige database geretourneerd.

Retourtypen

int

Opmerkingen

DB_ID mag alleen worden gebruikt om de database-id van de huidige database in Azure SQL Database te retourneren. NULL wordt geretourneerd als de opgegeven databasenaam anders is dan de huidige database.

Opmerking

In Azure SQL Database DB_ID wordt mogelijk niet dezelfde waarde geretourneerd als de database_id kolom in sys.databases en sys.database_service_objectives. Deze twee weergaven retourneren waarden die uniek zijn binnen de logische server, terwijl DB_ID en de database_id kolom in andere systeemweergaven waarden retourneert database_id die uniek zijn binnen één database of binnen een elastische pool.

Machtigingen

Als de aanroeper niet eigenaar is van DB_ID een specifieke niet-master - of niet-tempdb-database , ALTER ANY DATABASE of VIEW ANY DATABASE machtigingen op serverniveau zijn vereist om de bijbehorende DB_ID rij te zien. Voor de hoofddatabaseDB_ID moet u minimaal machtigingen hebben CREATE DATABASE . De database waarmee de aanroeper verbinding maakt, wordt altijd weergegeven in sys.databases.

Belangrijk

De openbare rol heeft standaard de VIEW ANY DATABASE machtiging, zodat alle aanmeldingen databasegegevens kunnen zien. Om te voorkomen dat een aanmelding een database detecteert, REVOKE de VIEW ANY DATABASE machtiging van openbaar of DENY de VIEW ANY DATABASE machtiging voor afzonderlijke aanmeldingen.

Voorbeelden

Eén. De database-id van de huidige database retourneren

In dit voorbeeld wordt de database-id van de huidige database geretourneerd.

SELECT DB_ID() AS [Database ID];  
GO  

B. De database-id van een opgegeven database retourneren

In dit voorbeeld wordt de database-id van de AdventureWorks2022 database geretourneerd.

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

C. Met DB_ID de waarde van een systeemfunctieparameter opgeven

In dit voorbeeld wordt de DB_ID database-id van de AdventureWorks2022 database in de systeemfunctie sys.dm_db_index_operational_statsgeretourneerd. De functie gebruikt een database-id als de eerste parameter.

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  

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

D. De id van de huidige database retourneren

In dit voorbeeld wordt de database-id van de huidige database geretourneerd.

SELECT DB_ID();  

E. Retourneert de id van een benoemde database.

In dit voorbeeld wordt de database-id van de AdventureWorksDW2022-database geretourneerd.

SELECT DB_ID('AdventureWorksPDW2012');  

Zie ook

DB_NAME (Transact-SQL)
Metagegevensfuncties (Transact-SQL)
sys.databases (Transact-SQL)
sys.dm_db_index_operational_stats (Transact-SQL)