परिदृश्य:
आप SQL सर्वर DBA या डेवलपर के रूप में काम कर रहे हैं, आपको स्क्रिप्ट तैयार करने की आवश्यकता है जो डेटाबेस में सभी तालिकाओं पर परिवर्तन डेटा कैप्चर (CDC) को अक्षम करने में सक्षम हो या यदि आप किसी विशिष्ट तालिका पर अक्षम करना चाहते हैं, तो यह सक्षम होना चाहिए इसे संभालने के लिए।नीचे दी गई स्क्रिप्ट का उपयोग डेटाबेस में सभी तालिकाओं पर परिवर्तन डेटा कैप्चर को अक्षम करने के लिए किया जा सकता है और यदि आप तालिकाओं की सूची प्रदान करना चाहते हैं, तो आपके पास विकल्प भी है। केवल चुनिंदा क्वेरी को बदलकर, आप उन तालिकाओं की सूची को शामिल या बहिष्कृत कर सकते हैं जिन पर आप सीडीसी को अक्षम करना चाहते हैं।
/*------------------------------------------------ Disable CDC on Set of Tables --------------------------------------------------*/
DECLARE @TableName VARCHAR(100)
DECLARE CDC_Cursor CURSOR FOR
--Provide List of Tables here on which CDC needs to be disabled. SELECT * FROM (SELECT 'T' AS TableName UNION ALL SELECT 'T2' AS TableName --IF want to Disable CDC on All Table, then use --SELECT Name --FROM sys.objects --WHERE type = 'u' -- AND is_ms_shipped <> 1 ) CDC OPEN CDC_Cursor FETCH NEXT FROM CDC_Cursor INTO @TableName WHILE @@FETCH_STATUS = 0 BEGIN DECLARE @SQL NVARCHAR(1000) DECLARE @CDC_Status TINYINT SET @CDC_Status=(SELECT COUNT(*) FROM cdc.change_tables WHERE Source_object_id = OBJECT_ID(@TableName)) --IF CDC is Already Disabled on Table , Print Message IF @CDC_Status = 0 PRINT 'CDC is already Disabled on ' + @TableName + ' Table' --IF CDC is not Disabled on Table, Disable CDC and Print Message IF @CDC_Status = 1 BEGIN SET @SQL='EXEC sys.sp_cdc_disable_table @source_schema = ''dbo'', @source_name = ''' + @TableName + ''', @capture_instance = N''All'';' EXEC sp_executesql @SQL PRINT 'CDC disabled on ' + @TableName + ' Table successfully' END FETCH NEXT FROM CDC_Cursor INTO @TableName END CLOSE CDC_Cursor DEALLOCATE CDC_Cursorसे अगला फ़ेच करें