DB_ID (Transact-SQL)

Gilt für: SQL Server Azure SQL-Datenbank Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)

Diese Funktion gibt die Datenbank-ID für eine angegebene Datenbank zurück.

Transact-SQL-Syntaxkonventionen

Syntax

DB_ID ( [ 'database_name' ] )   

Argumente

'database_name'
Der Name der Datenbank, deren Datenbank-ID von DB_ID zurückgegeben wird. Wenn database_name beim Aufruf von DB_ID ausgelassen wird, gibt DB_ID die ID der aktuellen Datenbank zurück.

Rückgabetypen

int

Bemerkungen

DB_ID wird möglicherweise nur verwendet, um die Datenbank-ID der aktuellen Datenbank in Azure SQL-Datenbank zurückzugeben. NULL wird zurückgegeben, wenn der angegebene Datenbankname von dem der aktuellen Datenbank abweicht.

Hinweis

In Azure SQL Datenbank gibt DB_ID möglicherweise nicht denselben Wert wie die database_id-Spalte in sys.databases und sys.database_service_objectives zurück. Diese beiden Ansichten geben database_id-Werte zurück, die innerhalb des logischen Servers eindeutig sind, während DB_ID und die database_id-Spalte in anderen Systemansichten Werte zurückgeben, die innerhalb einer einzelnen Datenbank oder innerhalb eines Pools für elastische Datenbanken eindeutig sind.

Berechtigungen

Wenn der Aufrufer von DB_ID keine spezifische Nicht-Master- oder Nicht-tempdb-Datenbank besitzt, sind mindestens die Berechtigungen ALTER ANY DATABASE oder VIEW ANY DATABASE auf Serverebene erforderlich, um die entsprechende DB_ID-Zeile anzuzeigen. DB_ID benötigt zumindest die Berechtigung CREATE DATABASE für die Master-Datenbank. Die Datenbank, mit der der Aufrufer eine Verbindung herstellt, wird immer in sys.databases angezeigt.

Wichtig

Standardmäßig verfügt die öffentliche Rolle über die Berechtigung VIEW ANY DATABASE, sodass alle Anmeldenamen auf Datenbankinformationen zugreifen können. Verhindern Sie, dass ein Anmeldename eine Datenbank erkennt, indem Sie die Berechtigung VIEW ANY DATABASE mit REVOKE widerrufen, sodass sie nicht mehr öffentlich ist, oder die Berechtigung VIEW ANY DATABASE mit DENY für individuelle Anmeldungen verweigern.

Beispiele

A. Zurückgeben der Datenbank-ID der aktuellen Datenbank

Im folgenden Beispiel wird die Datenbank-ID der aktuellen Datenbank zurückgegeben.

SELECT DB_ID() AS [Database ID];  
GO  

B. Zurückgeben der Datenbank-ID einer angegebenen Datenbank

Im folgenden Beispiel wird die Datenbank-ID der AdventureWorks2022-Datenbank zurückgegeben.

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

C. Angeben des Werts eines Systemfunktionsparameters mithilfe von DB_ID

Im folgenden Beispiel wird mithilfe von DB_ID die Datenbank-ID der AdventureWorks2022-Datenbank in der Systemfunktion sys.dm_db_index_operational_stats zurückgegeben. Der erste Parameter dieser Funktion ist eine Datenbank-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  

Beispiele: Azure Synapse Analytics und Analytics-Plattformsystem (PDW)

D: Rückgabe der ID der aktuellen Datenbank

Im folgenden Beispiel wird die Datenbank-ID der aktuellen Datenbank zurückgegeben.

SELECT DB_ID();  

E. Zurückgeben der ID der benannten Datenbank.

Im folgenden Beispiel wird die Datenbank-ID der AdventureWorksDW2022-Datenbank zurückgegeben.

SELECT DB_ID('AdventureWorksPDW2012');  

Siehe auch

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