SQL सर्वर में, आप FILE_NAME()
. का उपयोग कर सकते हैं किसी दिए गए डेटाबेस फ़ाइल के तार्किक फ़ाइल नाम को वापस करने के लिए कार्य करता है।
ऐसा करने के लिए, फ़ाइल आईडी को फ़ंक्शन में पास करें। यह वह आईडी है जो file_id
. से मेल खाती है sys.master_files
. में कॉलम कैटलॉग दृश्य या sys.database_files
कैटलॉग दृश्य। उन दृश्यों में तार्किक फ़ाइल नाम भी होता है, लेकिन FILE_NAME()
फ़ंक्शन आपको उन विचारों को क्वेरी करने से बचाता है।
उदाहरण 1 - मूल उपयोग
प्रदर्शित करने के लिए यहां एक त्वरित उदाहरण दिया गया है।
USE WideWorldImportersDW; SELECT FILE_NAME(1) AS Result;
परिणाम:
+-------------+ | Result | |-------------| | WWI_Primary | +-------------+
उदाहरण 2 - अधिक फ़ाइलें
यहां एक और उदाहरण दिया गया है, इस बार तीन फाइलें लौटा रहे हैं।
USE WideWorldImportersDW; SELECT FILE_NAME(1) AS [File 1], FILE_NAME(2) AS [File 2], FILE_NAME(3) AS [File 3];
परिणाम:
+-------------+----------+--------------+ | File 1 | File 2 | File 3 | |-------------+----------+--------------| | WWI_Primary | WWI_Log | WWI_UserData | +-------------+----------+--------------+
उदाहरण 3 - अलग डेटाबेस
इस उदाहरण में मैं एक अलग डेटाबेस पर स्विच करता हूं, फिर क्वेरी को फिर से चलाता हूं।
USE Music; SELECT FILE_NAME(1) AS [File 1], FILE_NAME(2) AS [File 2], FILE_NAME(3) AS [File 3];
परिणाम:
+----------+-----------+----------+ | File 1 | File 2 | File 3 | |----------+-----------+----------| | Music | Music_log | NULL | +----------+-----------+----------+
इस मामले में, 3 की आईडी वाली कोई फ़ाइल नहीं है, इसलिए मुझे उस कॉलम के लिए एक NULL परिणाम मिलता है।
उदाहरण 4 - sys.database_files का उपयोग करना
जैसा कि बताया गया है, FILE_NAME()
फ़ंक्शन आपको sys.database_files
. को क्वेरी करने से बचाता है या sys.master_files
विचार। अगर हमारे पास FILE_NAME()
नहीं होता फ़ंक्शन, हमें शायद कुछ ऐसा करना होगा:
SELECT name FROM sys.database_files WHERE file_id = 2;
परिणाम:
+-----------+ | name | |-----------| | Music_log | +-----------+
उदाहरण 5 - sys.master_files का उपयोग करना
अगर हमने sys.master_files
. का उपयोग किया है , हमें कौन सा डेटाबेस निर्दिष्ट करने के लिए कुछ कोड जोड़ना होगा:
SELECT name FROM sys.master_files WHERE file_id = 2 AND database_id = DB_ID();
परिणाम:
+-----------+ | name | |-----------| | Music_log | +-----------+
इस दृष्टि से, यदि आप डेटाबेस आईडी निर्दिष्ट नहीं करते हैं, तो आपको सभी डेटाबेस से परिणाम प्राप्त होंगे। इसलिए मैं निर्दिष्ट करता हूं कि कौन सा डेटाबेस WHERE
. में है खंड। इस मामले में मैं DB_ID()
. का उपयोग करता हूं वर्तमान डेटाबेस का नाम प्राप्त करने के लिए कार्य करें।