Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

DB_NAME () so với ORIGINAL_DB_NAME () trong SQL Server:Sự khác biệt là gì?

Hai trong số các hàm siêu dữ liệu có sẵn trong SQL Server bao gồm DB_NAME()ORIGINAL_DB_NAME() . Cả hai hàm tương tự nhau ở chỗ chúng trả về tên của cơ sở dữ liệu. Nhưng chúng cũng khác nhau. Bạn chắc chắn không muốn nhầm lẫn giữa hai điều này, vì chúng phục vụ các mục đích khác nhau.

Tóm lại, mỗi chức năng hoạt động như sau:

  • DB_NAME() trả về tên của một cơ sở dữ liệu được chỉ định. Nếu bạn không chỉ định cơ sở dữ liệu một cách rõ ràng, nó sẽ trả về cơ sở dữ liệu hiện tại.
  • ORIGINAL_DB_NAME() trả về tên cơ sở dữ liệu do người dùng chỉ định trong chuỗi kết nối cơ sở dữ liệu.

Ví dụ 1 - Kết nối ban đầu

Hãy xem xét chuỗi kết nối sau:

mssql-cli -S localhost -U sa -P bigStrongPassword!!! -d WideWorldImporters

Đây là chuỗi kết nối tôi đã cung cấp khi sử dụng mssql-cli công cụ dòng lệnh để kết nối với SQL Server.

Chuỗi kết nối này bao gồm -d WideWorldImporters , có nghĩa là cơ sở dữ liệu WideWorldImporters sẽ là cơ sở dữ liệu ban đầu. Khi tôi được kết nối với SQL Server, cơ sở dữ liệu hiện tại của tôi sẽ là WideWorldImporters.

Đây là những gì tôi nhận được khi chạy cả hai hàm sau khi đăng nhập bằng chuỗi kết nối ở trên:

SELECT 
  DB_NAME() AS [Current Database],
  ORIGINAL_DB_NAME() AS [Original Database],
  DB_NAME(5) AS [Another Database];

Kết quả:

+--------------------+---------------------+--------------------+
| Current Database   | Original Database   | Another Database   |
|--------------------+---------------------+--------------------|
| WideWorldImporters | WideWorldImporters  | MyDB               |
+--------------------+---------------------+--------------------+

Ví dụ 2 - Chuyển đổi cơ sở dữ liệu

Đây là những gì sẽ xảy ra nếu tôi chuyển sang một cơ sở dữ liệu khác và chạy lại câu lệnh:

USE Music;
SELECT 
  DB_NAME() AS [Current Database],
  ORIGINAL_DB_NAME() AS [Original Database],
  DB_NAME(5) AS [Another Database];

Kết quả:

+--------------------+---------------------+--------------------+
| Current Database   | Original Database   | Another Database   |
|--------------------+---------------------+--------------------|
| Music              | WideWorldImporters  | MyDB               |
+--------------------+---------------------+--------------------+

Cơ sở dữ liệu hiện tại thay đổi, nhưng cơ sở dữ liệu gốc vẫn như cũ. Cột thứ ba cũng giữ nguyên vì tôi đã chỉ định cùng một ID cơ sở dữ liệu (5 ) khi gọi DB_NAME() .

Ví dụ 3 - Cơ sở dữ liệu mặc định

Đây là những gì sẽ xảy ra nếu tôi không chỉ định rõ ràng cơ sở dữ liệu trong chuỗi kết nối:

mssql-cli -S localhost -U sa -P bigStrongPassword!!!

Bây giờ hãy chạy ORIGINAL_DB_NAME() :

SELECT 
  DB_NAME() AS [Current Database],
  ORIGINAL_DB_NAME() AS [Original Database],
  DB_NAME(5) AS [Another Database];

Kết quả:

+--------------------+---------------------+--------------------+
| Current Database   | Original Database   | Another Database   |
|--------------------+---------------------+--------------------|
| master             | master              | MyDB               |
+--------------------+---------------------+--------------------+

Cơ sở dữ liệu mặc định cho người dùng đó được sử dụng, trong trường hợp này là cơ sở dữ liệu chính.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách cài đặt SQL Server Manager Studio (SSMS) - Hướng dẫn SQL Server / TSQL Phần 1

  2. máy chủ sql chọn hàng đầu tiên từ một nhóm

  3. Khóa chính tự động tăng dần trong SQL Server Management Studio 2012

  4. Lỗi máy chủ SQL:Dữ liệu chuỗi hoặc nhị phân sẽ bị cắt bớt

  5. Cách kết nối với cơ sở dữ liệu từ Unity