SSISDB数据清理2

从网上找了一个可以清理SSISDB数据的存储过程,创建之后,直接执行存储过程就好

 

CREATE PROCEDURE [internal].[cleanup_server_retention_window_truncateall]
AS  
SET NOCOUNT ON
DECLARE @enable_clean_operation bit
DECLARE @retention_window_length INT
DECLARE @caller_name nvarchar(256)
DECLARE @caller_sid  varbinary(85)
DECLARE @operation_id BIGINT
EXECUTE AS CALLER
    SET @caller_name =  SUSER_NAME()
    SET @caller_sid =   SUSER_SID()
REVERT
BEGIN TRY
    SELECT @enable_clean_operation = CONVERT(bit, property_value) 
  FROM [catalog].[catalog_properties]
  WHERE property_name = 'OPERATION_CLEANUP_ENABLED'
    IF @enable_clean_operation = 1
    BEGIN
  SELECT @retention_window_length = CONVERT(INT,property_value)  
      FROM [catalog].[catalog_properties]
      WHERE property_name = 'RETENTION_WINDOW'
  IF @retention_window_length <= 0 
  BEGIN
      RAISERROR(27163    ,16,1,'RETENTION_WINDOW')
  END
  INSERT INTO [internal].[operations] (
      [operation_type],  
      [created_time], 
      [object_type],
      [object_id],
      [object_name],
      [STATUS], 
      [start_time],
      [caller_sid], 
      [caller_name]
      )
  VALUES (
      2,
      SYSDATETIMEOFFSET(),
      NULL,             
      NULL,             
      NULL,             
      1,      
      SYSDATETIMEOFFSET(),
      @caller_sid,        
      @caller_name        
      ) 
  SET @operation_id = SCOPE_IDENTITY() 
  -- Remove all [internal].[executions] dependancies
  TRUNCATE TABLE [internal].[executable_statistics]
  TRUNCATE TABLE [internal].[execution_component_phases]
  TRUNCATE TABLE [internal].[execution_data_statistics]
  TRUNCATE TABLE [internal].[execution_data_taps]
  TRUNCATE TABLE [internal].[execution_parameter_values]
  TRUNCATE TABLE [internal].[execution_property_override_values]
  -- Remove all [internal].[event_message_context] dependancies
  TRUNCATE TABLE [internal].[event_message_context]
  -- Remove all non-dependant tables
  TRUNCATE TABLE [internal].[operation_os_sys_info]
  TRUNCATE TABLE [internal].[operation_permissions]
  TRUNCATE TABLE [internal].[validations]
  TRUNCATE TABLE [internal].[extended_operation_info]
  -- Deal with [internal].[event_messages] and [internal].[operation_messages]
  ALTER TABLE [internal].[event_message_context] DROP CONSTRAINT [FK_EventMessageContext_EventMessageId_EventMessages]
  TRUNCATE TABLE internal.event_messages
  ALTER TABLE [internal].[event_message_context]  WITH CHECK ADD  CONSTRAINT [FK_EventMessageContext_EventMessageId_EventMessages] FOREIGN KEY([event_message_id])
  REFERENCES [internal].[event_messages] ([event_message_id])
  ON DELETE CASCADE
  ALTER TABLE [internal].[event_messages] DROP CONSTRAINT [FK_EventMessages_OperationMessageId_OperationMessage]
  TRUNCATE TABLE [internal].[operation_messages]
  ALTER TABLE [internal].[event_messages]  WITH CHECK ADD  CONSTRAINT [FK_EventMessages_OperationMessageId_OperationMessage] FOREIGN KEY([event_message_id])
  REFERENCES [internal].[operation_messages] ([operation_message_id])
  ON DELETE CASCADE
  -- Deal with [internal].[executions]
  ALTER TABLE [internal].[executable_statistics] DROP CONSTRAINT [FK_ExecutableStatistics_ExecutionId_Executions]
  ALTER TABLE [internal].[execution_component_phases] DROP CONSTRAINT [FK_ExecCompPhases_ExecutionId_Executions]
  ALTER TABLE [internal].[execution_data_statistics] DROP CONSTRAINT [FK_ExecDataStat_ExecutionId_Executions]
  ALTER TABLE [internal].[execution_data_taps] DROP CONSTRAINT [FK_ExecDataTaps_ExecutionId_Executions]
  ALTER TABLE [internal].[execution_parameter_values] DROP CONSTRAINT [FK_ExecutionParameterValue_ExecutionId_Executions]
  ALTER TABLE [internal].[execution_property_override_values] DROP CONSTRAINT [FK_ExecutionPropertyOverrideValue_ExecutionId_Executions]
  TRUNCATE TABLE [internal].[executions]
  ALTER TABLE [internal].[execution_property_override_values]  WITH CHECK ADD  CONSTRAINT [FK_ExecutionPropertyOverrideValue_ExecutionId_Executions] FOREIGN KEY([execution_id])
  REFERENCES [internal].[executions] ([execution_id])
  ON DELETE CASCADE
  ALTER TABLE [internal].[execution_parameter_values]  WITH CHECK ADD  CONSTRAINT [FK_ExecutionParameterValue_ExecutionId_Executions] FOREIGN KEY([execution_id])
  REFERENCES [internal].[executions] ([execution_id])
  ON DELETE CASCADE
  ALTER TABLE [internal].[execution_data_taps]  WITH CHECK ADD  CONSTRAINT [FK_ExecDataTaps_ExecutionId_Executions] FOREIGN KEY([execution_id])
  REFERENCES [internal].[executions] ([execution_id])
  ON DELETE CASCADE
  ALTER TABLE [internal].[execution_data_statistics]  WITH CHECK ADD  CONSTRAINT [FK_ExecDataStat_ExecutionId_Executions] FOREIGN KEY([execution_id])
  REFERENCES [internal].[executions] ([execution_id])
  ON DELETE CASCADE
  ALTER TABLE [internal].[execution_component_phases]  WITH CHECK ADD  CONSTRAINT [FK_ExecCompPhases_ExecutionId_Executions] FOREIGN KEY([execution_id])
  REFERENCES [internal].[executions] ([execution_id])
  ON DELETE CASCADE
  ALTER TABLE [internal].[executable_statistics]  WITH CHECK ADD  CONSTRAINT [FK_ExecutableStatistics_ExecutionId_Executions] FOREIGN KEY([execution_id])
  REFERENCES [internal].[executions] ([execution_id])
  ON DELETE CASCADE
  -- Deal with [internal].[operations]
  DECLARE @deleted_ops TABLE(operation_id BIGINT, operation_type SMALLINT)
  DELETE --TOP (@delete_batch_size)
  FROM [internal].[operations] 
  OUTPUT DELETED.operation_id, DELETED.operation_type INTO @deleted_ops
  WHERE operation_id != @operation_id
  DECLARE @execution_id BIGINT
  DECLARE @sqlString          nvarchar(1024)
  DECLARE @key_name           [internal].[adt_name]
  DECLARE @certificate_name       [internal].[adt_name]
  DECLARE execution_cursor CURSOR LOCAL FOR 
      SELECT operation_id FROM @deleted_ops 
      WHERE operation_type = 200
  OPEN execution_cursor
  FETCH NEXT FROM execution_cursor INTO @execution_id
  WHILE @@FETCH_STATUS = 0
  BEGIN
      SET @key_name = 'MS_Enckey_Exec_'+CONVERT(VARCHAR,@execution_id)
      SET @certificate_name = 'MS_Cert_Exec_'+CONVERT(VARCHAR,@execution_id)
      SET @sqlString = 'IF EXISTS (SELECT name FROM sys.symmetric_keys WHERE name = ''' + @key_name +''') '
    +'DROP SYMMETRIC KEY '+ @key_name
    EXECUTE sp_executesql @sqlString
      SET @sqlString = 'IF EXISTS (select name from sys.certificates WHERE name = ''' + @certificate_name +''') '
    +'DROP CERTIFICATE '+ @certificate_name
    EXECUTE sp_executesql @sqlString
      FETCH NEXT FROM execution_cursor INTO @execution_id
  END
  CLOSE execution_cursor
  DEALLOCATE execution_cursor
  END
END TRY
BEGIN CATCH
    IF (CURSOR_STATUS('local', 'execution_cursor') = 1 
  OR CURSOR_STATUS('local', 'execution_cursor') = 0)
    BEGIN
  CLOSE execution_cursor
  DEALLOCATE execution_cursor        
    END
    UPDATE [internal].[operations]
  SET [STATUS] = 4,
  [end_time] = SYSDATETIMEOFFSET()
  WHERE [operation_id] = @operation_id;       
    THROW
END CATCH
RETURN 0

 

转载于:https://www.cnblogs.com/luck001221/p/4599191.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值