Sdílet prostřednictvím


DB_ID (Transact-SQL)

Platí pro:SQL ServerAzure SQL DatabaseSpravovaná instance Azure SQLAzure Synapse AnalyticsAnalytics Platform System (PDW)Koncový bod analýzy SQL v Microsoft FabricSklad v Microsoft FabricDatabáze SQL v Microsoft Fabric

Tato funkce vrátí identifikační číslo databáze (ID) zadané databáze.

Transact-SQL konvence syntaxe

Syntaxe

DB_ID ( [ 'database_name' ] )   

Argumenty

"database_name"
Název databáze, jejíž číslo DB_ID ID databáze se vrátí. Pokud volání DB_ID vynechá database_name, DB_ID vrátí ID aktuální databáze.

Návratové typy

int

Poznámky

DB_ID lze použít pouze k vrácení identifikátoru databáze aktuální databáze ve službě Azure SQL Database. Hodnota NULL se vrátí, pokud je zadaný název databáze jiný než aktuální databáze.

Poznámka:

Ve službě Azure SQL Database DB_ID nemusí vrátit stejnou hodnotu jako database_id sloupec v sys.databases a sys.database_service_objectives. Tato dvě zobrazení vrací database_id hodnoty, které jsou jedinečné v rámci logického serveru, zatímco DB_ID sloupec database_id v jiných systémových zobrazeních vrací hodnoty, které jsou jedinečné v rámci jedné databáze nebo v rámci elastického fondu.

Povolení

Pokud volající nevlastní konkrétní databázi, která není DB_ID nebo jiná než databáze tempdb, nebo ALTER ANY DATABASE jsou pro zobrazení odpovídajícího VIEW ANY DATABASEDB_ID řádku vyžadována minimálně oprávnění na úrovni serveru. Pro hlavní databázi vyžaduje DB_IDCREATE DATABASE minimálně oprávnění. Databáze, ke které se volající připojuje, se vždy zobrazí v sys.databases.

Důležité

Ve výchozím nastavení má VIEW ANY DATABASE veřejná role oprávnění, která umožňuje všem přihlášením zobrazit informace o databázi. Pokud chcete zabránit přihlášení ke zjištění databáze, REVOKEVIEW ANY DATABASE oprávnění z veřejného účtu nebo DENYVIEW ANY DATABASE oprávnění pro jednotlivá přihlášení.

Příklady

A. Vrácení ID databáze aktuální databáze

Tento příklad vrátí ID databáze aktuální databáze.

SELECT DB_ID() AS [Database ID];  
GO  

B. Vrácení ID databáze zadané databáze

Tento příklad vrátí ID AdventureWorks2025 databáze databáze.

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

C. Určení hodnoty parametru systémové funkce pomocí DB_ID

Tento příklad používá DB_ID k vrácení ID AdventureWorks2025 databáze databáze v systémové funkci sys.dm_db_index_operational_stats. Funkce přebírá ID databáze jako první parametr.

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  

Příklady: Azure Synapse Analytics a Analytický platformový systém (PDW)

D. Vrátí ID aktuální databáze.

Tento příklad vrátí ID databáze aktuální databáze.

SELECT DB_ID();  

E. Vrátí ID pojmenované databáze.

Tento příklad vrátí ID databáze AdventureWorksDW2022.

SELECT DB_ID('AdventureWorksPDW2012');  

Viz také

DB_NAME (Transact-SQL)
Funkce metadat (Transact-SQL)
sys.databases (Transact-SQL)
sys.dm_db_index_operational_stats (Transact-SQL)