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

अनुक्रमणिका की सूची के लिए स्क्रिप्ट बनाएँ उत्पन्न करें

आप बहुत करीब हैं, मैं कहूंगा - मैंने यह कोशिश की, क्या आप सत्यापित कर सकते हैं कि यह आपके लिए काम करता है और आपको अपेक्षित 122 सूचकांकों को फिर से बनाने के लिए दिखाता है ??

अपडेट करें :CLUSTERED बनाम NONCLUSTERED अनुक्रमणिका प्रकार निर्धारित करने और अनुक्रमणिका परिभाषा में शामिल किए गए स्तंभों को जोड़ने के लिए अतिरिक्त कार्यक्षमता।

WITH indexCTE AS
(
    SELECT DISTINCT 
        i.index_id, i.name, i.object_id
    FROM 
        sys.indexes i 
    INNER JOIN
        sys.index_columns ic 
           ON i.index_id = ic.index_id AND i.object_id = ic.object_id
    WHERE 
        EXISTS (SELECT * FROM sys.columns c 
                 WHERE c.collation_name = 'Modern_Spanish_CI_AS' 
                 AND c.column_id = ic.column_id AND c.object_id = ic.object_id)
), 
indexCTE2 AS
(
    SELECT 
        indexCTE.name 'IndexName', 
        OBJECT_NAME(indexCTE.object_ID) 'TableName',
        CASE indexCTE.index_id 
          WHEN 1 THEN 'CLUSTERED'
          ELSE 'NONCLUSTERED'
        END AS 'IndexType', 
        (SELECT DISTINCT c.name + ','
         FROM 
            sys.columns c 
         INNER JOIN
            sys.index_columns ic 
               ON c.object_id = ic.object_id AND ic.column_id = c.column_id AND ic.Is_Included_Column = 0
         WHERE
            indexCTE.OBJECT_ID = ic.object_id 
            AND indexCTE.index_id = ic.index_id 
         FOR XML PATH('')
        ) ixcols,
        ISNULL(
        (SELECT DISTINCT c.name + ','
         FROM 
            sys.columns c 
         INNER JOIN
            sys.index_columns ic 
               ON c.object_id = ic.object_id AND ic.column_id = c.column_id AND ic.Is_Included_Column = 1
         WHERE
            indexCTE.OBJECT_ID = ic.object_id 
            AND indexCTE.index_id = ic.index_id 
         FOR XML PATH('')
        ), '') includedcols
    FROM 
        indexCTE
) 
SELECT 
    'CREATE ' + IndexType + ' INDEX ' + IndexName + ' ON ' + TableName + 
        '(' + SUBSTRING(ixcols, 1, LEN(ixcols)-1) + 
        CASE LEN(includedcols)
          WHEN 0 THEN ')'
          ELSE ') INCLUDE (' + SUBSTRING(includedcols, 1, LEN(includedcols)-1) + ')'
        END
FROM 
   indexCTE2
ORDER BY 
   TableName, IndexName

क्या आपको CREATE INDEX . मिलता है? बयान जो आप ढूंढ रहे हैं??

मार्क



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. एक ही संग्रहित प्रक्रिया के लिए अलग निष्पादन योजना

  2. कैसे जांचें कि एसक्यूएल सर्वर में कोई बाधा मौजूद है या नहीं?

  3. एंटिटी फ्रेमवर्क के साथ एंटिटी एक्सेस और अनुमतियों को प्रबंधित करें

  4. SQL सर्वर में उपयोगकर्ता-परिभाषित फ़ंक्शन से SCHEMABINDING निकालें

  5. PowerShell का उपयोग करके SQL सर्वर में .csv से डेटा कैसे आयात करें?