sql >> Database teknologi >  >> RDS >> Sqlserver

Brug DB_ID() til at returnere id'et for en database i SQL Server

I SQL Server kan du bruge DB_ID() funktion for at returnere ID'et for den aktuelle database eller en anden specificeret database.

Den måde, det fungerer på, er, at du videregiver navnet på databasen som et argument, og derefter vil funktionen returnere databasens ID. Hvis du ikke giver et navn, vil det returnere ID'et for den aktuelle database.

Eksempel 1 – Returner den aktuelle database

Her er et grundlæggende eksempel for at demonstrere, hvordan man returnerer navnet på den aktuelle database.

SELECT DB_ID() AS [Current Database];

Resultat:

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

I dette tilfælde har den aktuelle database et ID på 6.

Her er et andet eksempel, der demonstrerer det yderligere, ved at skifte database.

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)

Eksempel 2 – Returner en specifik database

Her er et eksempel på returnering af en specifik database. Dette gøres ved at indtaste navnet på databasen.

SELECT DB_ID('Music') AS Result;

Resultat:

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

Her er mere:

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                        |
+----------+----------+---------+--------+---------+--------------------------+

Eksempel 3 – En databaseforespørgsel

Her er et eksempel på hvor DB_ID() kunne komme til nytte.

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 dette eksempel er den aktuelle database WideWorldImportersDW, men jeg vil have information om en fremmednøgle i Music-databasen. OBJECT_NAME() funktion returnerer objektnavnet baseret på dets ID, men hvis objektet er i en anden database, giver det mig også mulighed for at angive database-id'et. Men i dette tilfælde kender jeg kun databasenavnet. Dog ikke et problem, fordi jeg kan bruge DB_ID() for at returnere ID'et baseret på navnet.


  1. er der nogen måde at logge alle mislykkede sql-sætninger i oracle 10g

  2. Udførelsesrækkefølge for SQL-forespørgslen

  3. Tilfældig værdi for kolonnen DATETIME

  4. Indsæt, hvis det ikke eksisterer Oracle