Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

DB_NAME() vs ORIGINAL_DB_NAME() di SQL Server:Apa Bedanya?

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.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cuplikan Basis Data SQL Server -1

  2. Bagaimana Pengaturan Bahasa dapat Mempengaruhi Hasil FORMAT() Anda di SQL Server (Contoh T-SQL)

  3. Menggunakan Indeks di Tabel yang Dioptimalkan Memori SQL Server

  4. Sensitivitas Kasus Postgres

  5. Buat Kolom Terhitung yang Menggunakan Data dari Tabel Lain di SQL Server