Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

SQL सर्वर में DB_NAME() बनाम ORIGINAL_DB_NAME():क्या अंतर है?

SQL सर्वर में उपलब्ध दो मेटाडेटा फ़ंक्शंस में शामिल हैं DB_NAME() और ORIGINAL_DB_NAME() . दोनों फ़ंक्शन समान हैं कि वे डेटाबेस का नाम लौटाते हैं। लेकिन वे भी अलग हैं। आप निश्चित रूप से दोनों को भ्रमित नहीं करना चाहते, क्योंकि वे अलग-अलग उद्देश्यों की पूर्ति करते हैं।

संक्षेप में, प्रत्येक फ़ंक्शन निम्नानुसार कार्य करता है:

  • DB_NAME() निर्दिष्ट डेटाबेस का नाम देता है। यदि आप स्पष्ट रूप से एक डेटाबेस निर्दिष्ट नहीं करते हैं, तो यह वर्तमान डेटाबेस लौटाता है।
  • ORIGINAL_DB_NAME() डेटाबेस कनेक्शन स्ट्रिंग में उपयोगकर्ता द्वारा निर्दिष्ट डेटाबेस नाम देता है।

उदाहरण 1 - प्रारंभिक कनेक्शन

निम्नलिखित कनेक्शन स्ट्रिंग पर विचार करें:

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

यह कनेक्शन स्ट्रिंग है जिसे मैंने mssql-cli . का उपयोग करते समय प्रदान किया था SQL सर्वर से कनेक्ट करने के लिए कमांड लाइन टूल।

इस कनेक्शन स्ट्रिंग में शामिल हैं -d WideWorldImporters , जिसका अर्थ है कि वाइडवर्ल्ड इम्पोर्टर्स डेटाबेस प्रारंभिक डेटाबेस होगा। एक बार जब मैं SQL सर्वर से जुड़ जाता हूँ, तो मेरा वर्तमान डेटाबेस वाइडवर्ल्ड इम्पोर्टर्स हो जाएगा।

जब मैं उपरोक्त कनेक्शन स्ट्रिंग के साथ लॉग इन करने के बाद दोनों फ़ंक्शन चलाता हूं तो मुझे यहां मिलता है:

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

परिणाम:

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

उदाहरण 2 - डेटाबेस स्विच करें

यदि मैं किसी भिन्न डेटाबेस पर स्विच करता हूँ और कथन को फिर से चलाता हूँ तो क्या होता है:

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

परिणाम:

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

वर्तमान डेटाबेस बदलता है, लेकिन मूल डेटाबेस वही रहता है। तीसरा कॉलम भी वही रहता है क्योंकि मैंने वही डेटाबेस आईडी निर्दिष्ट किया है (5 ) DB_NAME() . को कॉल करते समय .

उदाहरण 3 - डिफ़ॉल्ट डेटाबेस

यदि मैं कनेक्शन स्ट्रिंग में स्पष्ट रूप से डेटाबेस निर्दिष्ट नहीं करता तो क्या होता है:

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

अब ORIGINAL_DB_NAME() चलाएं :

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

परिणाम:

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

उस उपयोगकर्ता के लिए डिफ़ॉल्ट डेटाबेस का उपयोग किया जाता है, जो इस मामले में मास्टर डेटाबेस है।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर स्केलर-मूल्यवान फ़ंक्शन धीमे क्यों हो जाते हैं?

  2. SQL सर्वर में FORMAT () द्वारा समर्थित कस्टम दिनांक/समय प्रारूप स्ट्रिंग्स

  3. SQL सर्वर से Genero को जोड़ना

  4. CONVERT () का उपयोग करके SQL सर्वर में दिनांक/समय मान को स्ट्रिंग में कैसे परिवर्तित करें

  5. एक सहयोगी तालिका का उपयोग करने के बजाय झंडे को बिटमास्क के रूप में स्टोर करना बेहतर कब होता है?