增量数据库同步软件PanguSync侵入式全面清理脚本

Sqlserver

-- 变量声明  
DECLARE @tableName NVARCHAR(256)  
DECLARE @indexName NVARCHAR(128)  
DECLARE @triggerName NVARCHAR(256)  
DECLARE @sql NVARCHAR(MAX)  
DECLARE @constraintsname NVARCHAR(256)  
-- 声明游标来遍历所有用户表  
DECLARE curTables CURSOR FOR   
SELECT name   
FROM sys.tables   
WHERE type = 'U' -- 用户表  -- 打开游标  
OPEN curTables  
FETCH NEXT FROM curTables INTO @tableName  -- 循环遍历所有表  
WHILE @@FETCH_STATUS = 0  
BEGIN  -- 删除索引source  BEGIN TRY  SELECT @indexName = name  FROM sys.indexes  WHERE object_id = OBJECT_ID(@tableName)  AND name = 'I_PanguSyncSourceTimestamp'  IF @indexName IS NOT NULL  BEGIN  SET @sql = 'DROP INDEX ' + QUOTENAME(@indexName) + ' ON ' + QUOTENAME(@tableName) + ';'  EXEC sp_executesql @sql  PRINT 'Index I_PanguSyncSourceTimestamp dropped from ' + @tableName + '.'  END  END TRY  BEGIN CATCH  PRINT 'Error dropping index I_PanguSyncSourceTimestamp from ' + @tableName + '. Error: ' + ERROR_MESSAGE()  END CATCH  --删除CONSTRAINT sourceSELECT top 1 @constraintsname= c.name FROM sysconstraints a 
INNER JOIN syscolumns b  on a.colid=b.colid
INNER JOIN sysobjects c  on a.constid=c.id
WHERE a.id=object_id(@tableName)
AND b.name='C_PanguSyncSourceTimestamp'IF @constraintsname IS NOT NULL 	BEGIN  SET @sql = 'ALTER TABLE ' + QUOTENAME(@tableName) + ' DROP CONSTRAINT '+ QUOTENAME(@constraintsname)+';'EXEC sp_executesql @sql  END  -- 删除字段  sourceIF EXISTS (  SELECT 1   FROM sys.columns   WHERE name = 'C_PanguSyncSourceTimestamp'   AND object_id = OBJECT_ID(@tableName)  )  BEGIN  SET @sql = 'ALTER TABLE ' + QUOTENAME(@tableName) + ' DROP COLUMN C_PanguSyncSourceTimestamp;'  EXEC sp_executesql @sql  PRINT 'Column C_PanguSyncSourceTimestamp dropped from ' + @tableName  END  -- 删除索引 targetBEGIN TRY  SELECT @indexName = name  FROM sys.indexes  WHERE object_id = OBJECT_ID(@tableName)  AND name = 'I_PanguSyncTargetTimestamp'  IF @indexName IS NOT NULL  BEGIN  SET @sql = 'DROP INDEX ' + QUOTENAME(@indexName) + ' ON ' + QUOTENAME(@tableName) + ';'  EXEC sp_executesql @sql  PRINT 'Index I_PanguSyncTargetTimestamp dropped from ' + @tableName + '.'  END  END TRY  BEGIN CATCH  PRINT 'Error dropping index I_PanguSyncTargetTimestamp from ' + @tableName + '. Error: ' + ERROR_MESSAGE()  END CATCH  --删除CONSTRAINT targetSELECT top 1 @constraintsname= c.name FROM sysconstraints a 
INNER JOIN syscolumns b  on a.colid=b.colid
INNER JOIN sysobjects c  on a.constid=c.id
WHERE a.id=object_id(@tableName)
AND b.name='C_PanguSyncTargetTimestamp'IF @constraintsname IS NOT NULL 	BEGIN  SET @sql = 'ALTER TABLE ' + QUOTENAME(@tableName) + ' DROP CONSTRAINT '+ QUOTENAME(@constraintsname)+';'EXEC sp_executesql @sql  END  -- 删除字段  targetIF EXISTS (  SELECT 1   FROM sys.columns   WHERE name = 'C_PanguSyncTargetTimestamp'   AND object_id = OBJECT_ID(@tableName)  )  BEGIN  SET @sql = 'ALTER TABLE ' + QUOTENAME(@tableName) + ' DROP COLUMN C_PanguSyncTargetTimestamp;'  EXEC sp_executesql @sql  PRINT 'Column C_PanguSyncTargetTimestamp dropped from ' + @tableName  END  -- 删除触发器(包含PGD或PanguSync)  DECLARE curTriggers CURSOR FOR   SELECT name   FROM sys.triggers   WHERE OBJECT_NAME(parent_id) = @tableName  AND name LIKE '%_PGD_%' OR name LIKE '%PanguSync%'  OPEN curTriggers  FETCH NEXT FROM curTriggers INTO @triggerName  WHILE @@FETCH_STATUS = 0  BEGIN  SET @sql = 'DROP TRIGGER ' + QUOTENAME(@triggerName) + ';'  EXEC sp_executesql @sql  PRINT 'Trigger ' + @triggerName + ' dropped from ' + @tableName + '.'  FETCH NEXT FROM curTriggers INTO @triggerName  END  CLOSE curTriggers  DEALLOCATE curTriggers  -- 获取下一个表名  FETCH NEXT FROM curTables INTO @tableName  
END  -- 关闭并释放游标  
CLOSE curTables  
DEALLOCATE curTables

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/27864.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JS中访问节点和创建节点的方法都有什么?

在JavaScript中,访问节点和创建节点的方法非常丰富。以下是对这两种操作的详细方法归纳: 访问节点的方法 通过ID访问: getElementById(id):通过元素的ID属性获取对应的DOM节点。通过类名访问: getElementsByClassNam…

Setapp:只需一次订阅,即可获得 240 款+ Mac 软件

为一项任务寻找合适的应用程序是一项相当艰巨的任务。过去,最好的办法要么是花费宝贵的时间搜索可靠的评论,要么就是相信无论安装什么软件都能完成任务。 如果你是 Mac 用户,那么 Setapp 将让这一问题成为过去。无需在需要时下载单个程序&am…

【C++ COM组件 运用ATL工程创建和调用COM组件】

ATL (Active Template Library) 是一个用于简化 COM (Component Object Model) 组件开发的库。使用 ATL,你可以创建 COM 对象,这些对象可以跨进程和跨机器进行通信。下面是一个简单的步骤,说明如何使用 ATL 创建一个简单的 COM 组件&#xff…

vue之一键部署的shell脚本和它的点.bat文件、海螺AI、ChatGPT

MENU 前言vite.config.ts的配置deploy文件夹的其他内容remote.shpwd.txtdeploy.bat 前言 1、在src同级新建deploy.bat文件; 2、在src同级新建deploy文件夹,文件夹中新建pwd.txt和remote.sh文件; 3、配置好后,直接双击deploy.bat文…

鸿蒙轻内核M核源码分析系列二一 02 文件系统LittleFS

1、LFS文件系统结构体介绍 会分2部分来介绍结构体部分,先介绍LittleFS文件系统的结构体,然后介绍LiteOS-M内核中提供的和LittleFS相关的一些结构体。 1.1 LittleFS的枚举结构体 在openharmony/third_party/littlefs/lfs.h头文件中定义LittleFS的枚举、…

JavaScript-for循环

学习目标: 掌握for循环 学习内容: for循环语法退出循环for循环和while循环有什么区别for循环嵌套 for循环语法: 作用:重复执行代码。好处:把声明起始值、循环条件、变化值写到一起,让人一目了然&#xff…

在线时钟python案例

试了一下用通义来编写一些代码,以下是一个在线时钟的样例,只要能运行python就可以使用。 以下是运行后的结果。 代码(复制可用) import tkinter as tk from time import strftimedef update_time():current_time strftime(&quo…

Postman使用教程(Postman详细图文教程)

本文讲解的是postman工具安装、postman安装教程、postman工具下载、postman使用教程。Postman使得得开发人员和测试人员能够更高效地与Web服务进行交互和调试。 Postman不仅支持常见的HTTP方法,如GET、POST、PUT、DELETE等,还提供了丰富的请求编辑功能&…

c++ 设计类的时的构造函数和析构函数的注意事项

纯概念 类和对象是c里非常重要的概念。类属于一种数据类型,是根据业务逻辑,封装一些成员变量(数据部分)和成员函数(逻辑部分)。业务逻辑使用时,类可以实例化成对象。其中,在实例化对…

20240615给飞凌的OK3588-C开发板刷Rockchip原厂的Buildroot后的测试报告

20240615给飞凌的OK3588-C开发板刷Rockchip原厂的Buildroot后的测试报告: 【切记,由于没有替换DTS的,开发板发热量巨大!因此配备鼓风机进行加强散热了】 0、adb 默认没有 1、HDMI IN 4K 2024/6/15 20:32 4K全屏 2、HDMI OUT …

C++ 二分查找法【面试】

在C中实现二分查找法是一个常见的面试问题。二分查找法是一种在有序数组中查找特定元素的算法&#xff0c;其时间复杂度为O(log n)。以下是使用C实现二分查找的示例代码&#xff1a; #include <iostream> #include <vector>// 二分查找法函数 int binarySearch(co…

激活函数(Activation Function)

定义 激活函数&#xff08; A c t i v a t i o n F u n c t i o n Activation\ Function Activation Function&#xff09;是一种添加到人工神经网络中的函数&#xff0c;旨在帮助网络学习数据中的复杂模式。在神经网络中&#xff0c;除了输入层外&#xff0c;隐藏层和输出层的…

Redis原理篇——分布式锁

Redis原理篇——分布式锁 分布式锁是什么&#xff1f;分布式锁有哪些特性&#xff1f;分布式锁常用实现方式Redis 实现分布式锁一、简单的 Redis 锁二、带过期时间的 Redis 锁三、加上 Owner 的 Redis 锁四、Lua 脚本确保原子性 分布式锁是什么&#xff1f; 分布式锁是在分布式…

centos 8 换源

centos 8 换源 进入 root&#xff0c;切换至 yum.repos.d 目录 cd /etc/yum.repos.d/创建新文件夹并将源文件备份为 repo.bak mkdir backup && mv *repo backup/下载国内 yum 源文件 curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos…

软件体系结构笔记(自用)

来自《软件体系结构原理、方法与实践&#xff08;第三版&#xff09;》清华大学出版社 张友生编著 1-8章12章 复习笔记 如有错误&#xff0c;欢迎指正&#xff01;&#xff01;&#xff01;

HCIP认证笔记(填空)

1、为防止攻击者伪造BGP报文对设备进行攻击,可以通过配置GTSM功能检测IP报文中的TTL值的范围来对设备进行保护。如果某台设备配置了“peer x.x.x.x valid-ttl-hops 100",则被检测的报文的TTL值的有效范围为【(156),255】; 解析: peer {group-name | ipv4-address…

学习cel-go了解一下通用表达语言评估是什么

文章目录 1. 前言2. cel-go2.1 cel-go关键概念Applications(应用)Compilation(编译)Expressions(表达式)Environment环境解析表达式的三个阶段 3. cel-go的使用4. cel-go使用5. 说明6. 小结7. 参考 1. 前言 最近因为在项目里面实现的一个使用和||来组合获取字段值的功能有点儿…

MySQL员工练习

MySQL员工练习 1.数据显示 员工信息表emp&#xff1a; 字段&#xff1a;员工id,员工名字,工作岗位,部门经理,受雇日期,薪水,奖金,部门编号 英文名&#xff1a;EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,BONUS,DEPTNO 部门信息表dept&#xff1a; 字段&#xff1a;部门编号,部门名称,部…

自然抽样和平顶抽样

自然抽样和平顶抽样是两种信号处理和采样技术&#xff0c;它们在音频信号处理、信号重建以及数字信号处理中有着不同的应用。 1. 自然抽样&#xff08;也称为理想抽样或无失真抽样&#xff09;&#xff1a;样值脉冲的幅度随原始信号m(t)的幅度而变&#xff1b; 自然抽样过程的…

Java算法常用技巧

一、排序 资料&#xff1a;https://blog.csdn.net/weixin_72499901/article/details/136592073 正排序 import java.util.Arrays;public class SortArray {public static void main(String[] args) {int[] citations {5, 3, 8, 2, 1, 4};// 打印原数组System.out.println(&…