Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
              Gäller för:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analysplattformssystem (PDW)
SQL-analysslutpunkt i Microsoft Fabric
Lager i Microsoft Fabric
SQL-databas i Förhandsversion av Microsoft Fabric
Den här funktionen returnerar databasidentifieringsnumret (ID) för en angiven databas.
              
              
              Transact-SQL syntaxkonventioner
Syntax
DB_ID ( [ 'database_name' ] )   
Argumentpunkter
"database_name"
Namnet på databasen vars databas-ID-nummer DB_ID returneras. Om anropet till DB_ID utelämnar database_nameDB_ID returnerar ID för den aktuella databasen.
Returtyper
int
Anmärkningar
              DB_ID kan endast användas för att returnera databasidentifieraren för den aktuella databasen i Azure SQL Database. NULL returneras om det angivna databasnamnet är annat än den aktuella databasen.
Anmärkning
I Azure SQL Database DB_ID kanske inte returnerar samma värde som database_id kolumnen i sys.databases och sys.database_service_objectives. Dessa två vyer returnerar database_id värden som är unika inom den logiska servern, medan DB_ID kolumnen database_id i andra systemvyer returnerar värden som är unika i en enskild databas eller i en elastisk pool.
Behörigheter
Om anroparen av DB_ID inte äger en specifik icke-huvuddatabas eller icke-tempdb-databas eller ALTER ANY DATABASEVIEW ANY DATABASE behörigheter på servernivå krävs minst för att se motsvarande DB_ID rad. För huvuddatabasenDB_ID behöver CREATE DATABASE du minst behörighet. Den databas som anroparen ansluter till visas alltid i sys.databases.
Viktigt!
Som standard har den offentliga rollen behörigheten VIEW ANY DATABASE , vilket gör att alla inloggningar kan se databasinformation. För att förhindra att en inloggning identifierar en databas, REVOKE behörigheten VIEW ANY DATABASE från offentlig eller DENY behörigheten VIEW ANY DATABASE för enskilda inloggningar.
Exempel
A. Returnera databas-ID för den aktuella databasen
Det här exemplet returnerar databas-ID för den aktuella databasen.
SELECT DB_ID() AS [Database ID];  
GO  
B. Returnera databas-ID för en angiven databas
Det här exemplet returnerar databasens AdventureWorks2022 databas-ID.
SELECT DB_ID(N'AdventureWorks2008R2') AS [Database ID];  
GO  
C. Använda DB_ID för att ange värdet för en systemfunktionsparameter
I det här exemplet används DB_ID för att returnera databas-ID:t för AdventureWorks2022 databasen i systemfunktionen sys.dm_db_index_operational_stats. Funktionen tar ett databas-ID som den första parametern.
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  
Exempel: Azure Synapse Analytics and Analytics Platform System (PDW)
D. Returnera ID för den aktuella databasen
Det här exemplet returnerar databas-ID för den aktuella databasen.
SELECT DB_ID();  
E. Returnera ID för en namngiven databas.
Det här exemplet returnerar databas-ID för databasen AdventureWorksDW2022.
SELECT DB_ID('AdventureWorksPDW2012');  
Se även
              DB_NAME (Transact-SQL)
              Metadata functions (Transact-SQL)
              sys.databases (Transact-SQL)
              sys.dm_db_index_operational_stats (Transact-SQL)