Dua dari fungsi metadata yang tersedia di SQL Server termasuk DB_NAME()
dan ORIGINAL_DB_NAME()
. Kedua fungsi serupa karena mengembalikan nama database. Tapi mereka juga berbeda. Anda pasti tidak ingin membingungkan keduanya, karena keduanya memiliki tujuan yang berbeda.
Singkatnya, setiap fungsi bekerja sebagai berikut:
DB_NAME()
mengembalikan nama database tertentu. Jika Anda tidak secara eksplisit menentukan database, itu mengembalikan database saat ini.ORIGINAL_DB_NAME()
mengembalikan nama database yang ditentukan oleh pengguna dalam string koneksi database.
Contoh 1 – Koneksi Awal
Pertimbangkan string koneksi berikut:
mssql-cli -S localhost -U sa -P bigStrongPassword!!! -d WideWorldImporters
Ini adalah string koneksi yang saya berikan saat menggunakan mssql-cli alat baris perintah untuk terhubung ke SQL Server.
String koneksi ini mencakup -d WideWorldImporters
, yang berarti database WideWorldImporters akan menjadi database awal. Setelah saya terhubung ke SQL Server, database saya saat ini adalah WideWorldImporters.
Inilah yang saya dapatkan ketika saya menjalankan kedua fungsi setelah masuk dengan string koneksi di atas:
SELECT DB_NAME() AS [Current Database], ORIGINAL_DB_NAME() AS [Original Database], DB_NAME(5) AS [Another Database];
Hasil:
+--------------------+---------------------+--------------------+ | Current Database | Original Database | Another Database | |--------------------+---------------------+--------------------| | WideWorldImporters | WideWorldImporters | MyDB | +--------------------+---------------------+--------------------+
Contoh 2 – Beralih Basis Data
Inilah yang terjadi jika saya beralih ke database lain dan menjalankan pernyataan lagi:
USE Music; SELECT DB_NAME() AS [Current Database], ORIGINAL_DB_NAME() AS [Original Database], DB_NAME(5) AS [Another Database];
Hasil:
+--------------------+---------------------+--------------------+ | Current Database | Original Database | Another Database | |--------------------+---------------------+--------------------| | Music | WideWorldImporters | MyDB | +--------------------+---------------------+--------------------+
Basis data saat ini berubah, tetapi basis data asli tetap sama. Kolom ketiga juga tetap sama karena saya menetapkan ID database yang sama (5
) saat memanggil DB_NAME()
.
Contoh 3 – Basis Data Default
Inilah yang terjadi jika saya tidak secara eksplisit menentukan database dalam string koneksi:
mssql-cli -S localhost -U sa -P bigStrongPassword!!!
Sekarang jalankan ORIGINAL_DB_NAME()
:
SELECT DB_NAME() AS [Current Database], ORIGINAL_DB_NAME() AS [Original Database], DB_NAME(5) AS [Another Database];
Hasil:
+--------------------+---------------------+--------------------+ | Current Database | Original Database | Another Database | |--------------------+---------------------+--------------------| | master | master | MyDB | +--------------------+---------------------+--------------------+
Database default untuk pengguna tersebut digunakan, yang dalam hal ini adalah database master.