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