Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für:SQL Server
Azure SQL-Datenbank
Verwaltete Azure SQL-Instanz
Azure Synapse Analytics
Analytics Platform System (PDW)
SQL-Analyseendpunkt in Microsoft Fabric
Lagerhaus in Microsoft Fabric
SQL-Datenbank in Microsoft Fabric
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 DB_ID beim Aufruf von 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.
benötigt zumindest die Berechtigung DB_ID für die CREATE DATABASE-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 REVOKE mit VIEW ANY DATABASE widerrufen, sodass sie nicht mehr öffentlich ist, oder die Berechtigung DENY mit VIEW ANY DATABASE 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 AdventureWorks2025-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 AdventureWorks2025-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)