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

SQL सर्वर में डेटाबेस फ़ाइल की आईडी वापस करने के लिए FILE_IDEX() का उपयोग करें

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 . में खंड।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. क्या मुझे वास्तव में SET XACT_ABORT ON का उपयोग करने की आवश्यकता है?

  2. मैं संग्रहीत प्रक्रिया में पैरामीटर के रूप में सूची कैसे पास करूं?

  3. एसक्यूएल सर्वर (टी-एसक्यूएल) में मुद्रा के रूप में संख्याओं को कैसे प्रारूपित करें

  4. SQL सर्वर ऑलवेजऑन (उपलब्धता समूह) आर्किटेक्चर और स्टेप बाय स्टेप इंस्टॉलेशन -4 डेटाबेस स्टेप्स जोड़ें और निकालें

  5. SQL सर्वर में बाइनरी डेटा प्रकार संग्रहीत करना