SQL SERVER tablediff比较表是否一致工具
来源:互联网 发布:linux系统大全 编辑:程序博客网 时间:2024/06/06 17:10
1. tablediff 是什么?
tablediff 实用工具用于比较两个非收敛的表中的数据,它对于排除复制拓扑中的非收敛故障非常有用。
2. tablediff 用哪些用法?
1) . 在充当复制发布服务器的 Microsoft SQL Server 实例中的源表与充当复制订阅服务器的一个或多个 SQL Server 实例中的目标表之间进行逐行比较。
2) . 通过只比较行数和架构可以执行快速比较。
3) . 执行列级比较。
4) . 生成 Transact-SQL 脚本,用以修复目标服务器中的差异,以使源表和目标表实现收敛。
5) . 将结果记录到输出文件或目标数据库的表中。
3. tablediff 语法
tablediff [ -? ] | { -sourceserver source_server_name[\instance_name] -sourcedatabase source_database -sourcetable source_table_name [ -sourceschema source_schema_name ] [ -sourcepassword source_password ] [ -sourceuser source_login ] [ -sourcelocked ] -destinationserver destination_server_name[\instance_name] -destinationdatabase subscription_database -destinationtable destination_table [ -destinationschema destination_schema_name ] [ -destinationpassword destination_password ] [ -destinationuser destination_login ] [ -destinationlocked ] [ -b large_object_bytes ] [ -bf number_of_statements ] [ -c ] [ -dt ] [ -et table_name ] [ -f [ file_name ] ] [ -o output_file_name ] [ -q ] [ -rc number_of_retries ] [ -ri retry_interval ] [ -strict ] [ -t connection_timeouts ] }
4. tablediff 注意事项
tablediff 默认存放路径(SQL SERVER 2008) : C:\Program Files\Microsoft SQL Server\100\COM
tablediff 实用工具不能用于非SQL SERVE服务器
若要比较表,您必须要有比较表对象的 SELECT ALL 权限
5. tablediff 使用举例
tablediff.exe -sourceserver 10.172.2.100 -sourceuser sa -sourcepassword sasa -sourcedatabase testdb3 -sourceschema dbo -sourcetable t1 -destinationserver 10.172.2.112 -destinationuser sa -destinationpassword sasa -destinationdatabase testdb1 -destinationschema dbo -destinationtable t1 -c
创建测试环境:
--SERVER :HOUYAJUNuse TESTgocreate table person(id int identity(1,1),name varchar(50) default('guoqiang'),[address] varchar(100) default('anhui hefei'),infro varchar(100))goinsert into person(infro)select 'test1'unionselect 'test2'unionselect 'test3'goselect * from TEST.dbo.person with(nolock)-- SERVER: HOUYAJUN\JHIDCDBS005use RepTestgocreate table person(id int identity(1,1),name varchar(50) default('guoqiang'),[address] varchar(100) default('anhui hefei'),infro varchar(100))goalter table RepTest.dbo.person add t1 intinsert into person(infro)select 'test1'unionselect 'test2'unionselect 'test3'go 2select * from TEST.dbo.person with(nolock)
参数 -c : 比较列差异
a.两个表结构完全相同且数据相同
b. 我们来在HOUYAJUN\JHIDCSDBS005上面的表加10行数据
insert into RepTest.dbo.personselect 't_04', 't_05' ,'t_06' go 10
再执行上面同样的命令可以看到以下不同:
在此处我们可以看到我对B表修改的列的主键,我们可以根据这些可对表进行操作。在下面会讲述如此对这些数据不一致进行生动生成脚本
c. 如果我们再对表结构进行修改
alter table RepTest.dbo.person add te01 int
再执行上述语句可以看到以下情况:
d. 在此处我们可以看到不同,但不能看到具体的不同,我们再来把刚才多余的数据进行删除看看有什么
delete from RepTest.dbo.person where id in (4 ,5 ,6 ,7 ,8 ,9 ,10,11 ,12,13)
可以看到和上面一样的错误,但是没有出现错误到底是什么不同哦。
参数 -q : 通过只比较行数和架构可以执行较快速比较
和上面-c的基本是一样。我们再来把多出的一列删除掉,插入2条记录看一下。
alter table reptest.dbo.person drop column te01goinsert into RepTest.dbo.personselect 't_04', 't_05' ,'t_06' go 2
现在应该是表结构一样,数据多了2个
可以看到这个是把2个表的数据行写出来了,一个为3,另外一个为5,没有指定那些不同,但是可以到出2个表是不一样的。
参数 –f: 生成T-SQL脚本,以使目标服务器上的表与源服务器上的表实现收敛
参数 –o: 输出文件的完整名称和路径。可以输出日志信息。
在这里我们没有看到错误信息了,因为错误信息已经写在了log里面,而persondiff则为对应的SQL修改语句。
log 信息为:
Table [test].[dbo].[person] on houyajun and Table [reptest].[dbo].[person] on houyajun\jhidcdbs005 have 2 differences.Fix SQL written to d:persondiff.sql.Err id ColDest. Only 14 Dest. Only 15 The requested operation took 0.154 seconds.
persondiff.sql 的信息为:
-- Host: houyajun\jhidcdbs005-- Database: [reptest]-- Table: [dbo].[person]SET IDENTITY_INSERT [dbo].[person] ONDELETE FROM [dbo].[person] WHERE [id] = 14DELETE FROM [dbo].[person] WHERE [id] = 15SET IDENTITY_INSERT [dbo].[person] OFF
- SQL SERVER tablediff比较表是否一致工具
- SQL Server工具TableDiff使用场景
- MSSQL 2005, 2008自带 表比较工具 tablediff.exe
- 用sql比较两个是否一致
- 一个Windows界面的TableDiff表比较工具,可比较表记录差异
- SQL SERVER 两张结构一致的table比较
- C#比较图片是否一致
- 比较两个文件是否一致。
- tablediff工具实用
- 比较两文件内容是否一致
- 比较两张表的数据是否一致
- 比较数据库的表,字段是否一致,找出差异的表、字段
- tablediff
- 获取文件Hash值,用于比较文件是否一致
- (宏代码)Execl 中 比较两个Sheet内容是否一致
- Golang不使用MD5比较文件内容是否一致
- Golang不使用MD5比较文件内容是否一致
- QT 比较两个文件是否一致(不限格式)
- 给予iOS初学者的个人建议
- HTML相关
- C#学习日记-数组和集合
- 线程、进程
- 第一天 SQL语句
- SQL SERVER tablediff比较表是否一致工具
- 【二分图匹配】HDU1281-棋盘游戏
- Java的枚举类型使用方法详解
- 第一个hadoop入门程序WordCount
- String format的简单用法
- Flask Web 开发 用户认证_6
- Android自定义饼图TTJPieChart
- android 选择图片 裁剪 Fileprovider
- Leetcode 95. Unique Binary Search Trees II 二叉搜索树2 解题报告