Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Verwenden Sie DB_ID(), um die ID einer Datenbank in SQL Server zurückzugeben

In SQL Server können Sie die DB_ID() verwenden Funktion, um die ID der aktuellen Datenbank oder einer anderen angegebenen Datenbank zurückzugeben.

So funktioniert es:Sie übergeben den Namen der Datenbank als Argument, und die Funktion gibt dann die ID dieser Datenbank zurück. Wenn Sie keinen Namen übergeben, wird die ID der aktuellen Datenbank zurückgegeben.

Beispiel 1 – Aktuelle Datenbank zurückgeben

Hier ist ein einfaches Beispiel, um zu demonstrieren, wie der Name der aktuellen Datenbank zurückgegeben wird.

SELECT DB_ID() AS [Current Database];

Ergebnis:

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

In diesem Fall hat die aktuelle Datenbank die ID 6.

Hier ist ein weiteres Beispiel, das es weiter demonstriert, indem Datenbanken gewechselt werden.

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

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

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

Ergebnis:

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)

Beispiel 2 – Rückgabe einer bestimmten Datenbank

Hier ist ein Beispiel für die Rückgabe einer bestimmten Datenbank. Dazu wird der Name der Datenbank übergeben.

SELECT DB_ID('Music') AS Result;

Ergebnis:

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

Hier ist mehr:

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'];

Ergebnis:

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

Beispiel 3 – Eine Datenbankabfrage

Hier ist ein Beispiel dafür, wo DB_ID() könnte sich als nützlich erweisen.

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';

Ergebnis:

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

In diesem Beispiel ist die aktuelle Datenbank WideWorldImportersDW, aber ich möchte Informationen über einen Fremdschlüssel in der Musikdatenbank. Das OBJECT_NAME() Die Funktion gibt den Objektnamen basierend auf seiner ID zurück, aber wenn sich das Objekt in einer anderen Datenbank befindet, kann ich auch die Datenbank-ID angeben. Allerdings kenne ich in diesem Fall nur den Datenbanknamen. Kein Problem, da ich DB_ID() verwenden kann um die ID basierend auf dem Namen zurückzugeben.