sql >> Databasteknik >  >> RDS >> Sqlserver

Använd DB_ID() för att returnera ID:t för en databas i SQL Server

I SQL Server kan du använda DB_ID() funktion för att returnera ID för den aktuella databasen, eller en annan specificerad databas.

Så det fungerar är att du skickar namnet på databasen som ett argument, och sedan returnerar funktionen ID:t för databasen. Om du inte skickar ett namn kommer det att returnera ID:t för den aktuella databasen.

Exempel 1 – Returnera den aktuella databasen

Här är ett grundläggande exempel för att visa hur man returnerar namnet på den aktuella databasen.

SELECT DB_ID() AS [Current Database];

Resultat:

+--------------------+
| Current Database   |
|--------------------|
| 6                  |
+--------------------+

I det här fallet har den aktuella databasen ett ID på 6.

Här är ett annat exempel som visar det ytterligare, genom att byta databaser.

USE Music;
SELECT DB_ID() AS [Current Database];

USE EMS;
SELECT DB_ID() AS [Current Database];

USE WideWorldImportersDW;
SELECT DB_ID() AS [Current Database];

Resultat:

Changed database context to 'Music'.
+--------------------+
| Current Database   |
|--------------------|
| 5                  |
+--------------------+
(1 row affected)
Changed database context to 'EMS'.
+--------------------+
| Current Database   |
|--------------------|
| 14                 |
+--------------------+
(1 row affected)
Changed database context to 'WideWorldImportersDW'.
+--------------------+
| Current Database   |
|--------------------|
| 6                  |
+--------------------+
(1 row affected)

Exempel 2 – Returnera en specifik databas

Här är ett exempel på att returnera en specifik databas. Detta görs genom att ange namnet på databasen.

SELECT DB_ID('Music') AS Result;

Resultat:

+----------+
| Result   |
|----------|
| 5        |
+----------+

Här är mer:

SELECT 
  DB_ID('master') AS [master],
  DB_ID('tempdb') AS [tempdb],
  DB_ID('model') AS [model],
  DB_ID('msdb') AS [msdb],
  DB_ID('Music') AS [Music],
  DB_ID('WideWorldImportersDW') AS ['WideWorldImportersDW'];

Resultat:

+----------+----------+---------+--------+---------+--------------------------+
| master   | tempdb   | model   | msdb   | Music   | 'WideWorldImportersDW'   |
|----------+----------+---------+--------+---------+--------------------------|
| 1        | 2        | 3       | 4      | 5       | 6                        |
+----------+----------+---------+--------+---------+--------------------------+

Exempel 3 – En databasfråga

Här är ett exempel på var DB_ID() kan komma väl till pass.

USE WideWorldImportersDW;
SELECT
  name AS [Foreign Key],
  OBJECT_NAME(parent_object_id, DB_ID('Music')) AS [Parent Object Name],
  OBJECT_NAME(referenced_object_id, DB_ID('Music')) AS [Referenced Object Name]
FROM Music.sys.foreign_keys
WHERE name = 'FK_Artists_Country';

Resultat:

Changed database context to 'WideWorldImportersDW'.
+--------------------+----------------------+--------------------------+
| Foreign Key        | Parent Object Name   | Referenced Object Name   |
|--------------------+----------------------+--------------------------|
| FK_Artists_Country | Artists              | Country                  |
+--------------------+----------------------+--------------------------+
(1 row affected)

I det här exemplet är den aktuella databasen WideWorldImportersDW, men jag vill ha information om en främmande nyckel i Musikdatabasen. OBJECT_NAME() funktion returnerar objektnamnet baserat på dess ID, men om objektet finns i en annan databas tillåter den mig också att ange databas-ID. Men i det här fallet känner jag bara till databasnamnet. Inte ett problem dock eftersom jag kan använda DB_ID() för att returnera ID baserat på namnet.


  1. Vad är Percona DB

  2. Identifiera materialstycksstrukturen (BOM) i databaser

  3. SQL VÄLJ AVG

  4. MySQL casta/konvertera automatiskt en sträng till ett nummer?