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

वर्तमान अनुक्रमणिका को स्वचालित रूप से छोड़ें और पुन:बनाएँ

मेरे पास स्क्रिप्ट है जिसका उपयोग मैं सभी गैर-क्लस्टर इंडेक्स को कैप्चर करने के लिए सिस्टम टेबल से पूछताछ करने के लिए करता हूं और अक्षम होने पर पूरा होने पर पुनर्निर्माण करता हूं। नीचे मानक संस्करण पर उपयोग के लिए है, यदि आप उद्यम पर हैं तो मैं ONLINE जोड़ूंगा विकल्प।

अक्षम करें

DECLARE @sql AS VARCHAR(MAX);
SET @sql = '';
SELECT 
    @sql = @sql + 'ALTER INDEX [' + i.name + '] ON [' + o.name + '] DISABLE; '
FROM sys.indexes AS i
JOIN sys.objects AS o ON i.object_id = o.object_id
WHERE i.type_desc = 'NONCLUSTERED'
AND o.type_desc = 'USER_TABLE'

EXEC (@sql)

पुनर्निर्माण

DECLARE @sql AS VARCHAR(MAX);
SET @sql = '';
SELECT 
    @sql = @sql + 'ALTER INDEX [' + i.name + '] ON [' + o.name + '] REBUILD WITH (FILLFACTOR = 80); '
FROM sys.indexes AS i
JOIN sys.objects AS o ON i.object_id = o.object_id
WHERE i.type_desc = 'NONCLUSTERED'
AND o.type_desc = 'USER_TABLE'

EXEC (@sql);

मुझे यह तरीका पसंद है क्योंकि यह बहुत अनुकूलन योग्य है क्योंकि आप शर्तों के आधार पर कुछ तालिकाओं को बाहर/शामिल कर सकते हैं और साथ ही एक कर्सर से बच सकते हैं। साथ ही आप EXEC . को भी बदल सकते हैं एक PRINT . के लिए और वह कोड देखें जो इसे निष्पादित करेगा और इसे मैन्युअल रूप से चलाएगा।

तालिका बहिष्कृत करने की शर्त

AND o.name NOT IN ('tblTest','tblTest1');


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर 2005 में गतिरोध का निदान

  2. SQL सर्वर 2014 के लिए एक प्रोसेसर का चयन करना - भाग 2

  3. SQL क्वेरी जिसमें समूह शामिल है और जुड़ता है

  4. SQL सर्वर (T-SQL) में datetime2 मान में समय क्षेत्र ऑफ़सेट जोड़ें

  5. क्या SQL सर्वर प्रबंधन स्टूडियो में एक सेलेक्ट ... INTO OUTFILE समकक्ष है?