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 | +--------------------+---------------------+--------------------+
उस उपयोगकर्ता के लिए डिफ़ॉल्ट डेटाबेस का उपयोग किया जाता है, जो इस मामले में मास्टर डेटाबेस है।