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)