Sqlserver tablediff的简单使用
1. 先列举一下自己简单的比较语句
tablediff -sourceserver 10.24.160.73 -sourcedatabase cwbasemi70 -sourceschema lcmi709999 -sourcetable gspuser -destinationserver 10.24.160.94 -destinationdatabase cwbasemi70 -destinationschema lcmi709999 -destinationtable gspuser -strict
效果为:

如果简单对比的话 可以使用:

注意一下官网的说明:
tablediff 实用工具
- 2017/03/06
- 作者
tablediff 实用工具用于比较两个非收敛表中的数据,它对于排除复制拓扑中的非收敛故障非常有用。 可以从命令提示符或在批处理文件中使用该实用工具执行以下任务:
在充当复制发布服务器的 Microsoft SQL Server 实例中的源表与充当复制订阅服务器的一个或多个 SQL Server 实例中的目标表之间进行逐行比较。
通过只比较行数和架构可以执行快速比较。
执行列级比较。
生成 Transact-SQL 脚本,用以修复目标服务器中的差异,以使源表和目标表实现收敛。
将结果记录到输出文件或目标数据库的表中。
语法
tablediff
[ -? ] |
{
-sourceserversource_server_name[\instance_name]
-sourcedatabasesource_database-sourcetablesource_table_name
[ -sourceschemasource_schema_name ]
[ -sourcepasswordsource_password ]
[ -sourceusersource_login ]
[ -sourcelocked ]
-destinationserverdestination_server_name[\instance_name]
-destinationdatabasesubscription_database-destinationtabledestination_table
[ -destinationschemadestination_schema_name ]
[ -destinationpassworddestination_password ]
[ -destinationuserdestination_login ]
[ -destinationlocked ]
[ -blarge_object_bytes ]
[ -bfnumber_of_statements ]
[ -c ]
[ -dt ]
[ -ettable_name ]
[ -f [ file_name ] ]
[ -ooutput_file_name ]
[ -q ]
[ -rcnumber_of_retries ]
[ -riretry_interval ]
[ -strict ]
[ -tconnection_timeouts ]
}
参数
[ -? ]
返回支持参数的列表。
-sourceserver source_server_name[\instance_name]
源服务器的名称。 指定_源_服务器_名称_的默认实例为SQL Server。 指定_源_服务器_名称_\_实例_名称_对于命名实例的SQL Server.
-sourcedatabase source_database
源数据库的名称。
-sourcetable source_table_name
正在检查的源表的名称。
-sourceschema source_schema_name
源表的架构所有者。 默认情况下,表所有者假定为 dbo。
-sourcepassword source_password
使用 SQL Server 身份验证连接到源服务器时所使用的登录帐户的密码。
重要
可能的话,请在运行时提供安全凭据。 如果必须在脚本文件中存储凭据,则应保护文件以防止未经授权的访问。
-sourceuser source_login
使用 SQL Server 身份验证连接到源服务器时所使用的登录帐户。 如果未提供 source_login ,则连接到源服务器时使用 Windows 身份验证。 请尽可能使用 Windows 身份验证。
-sourcelocked
在使用 TABLOCK 和 HOLDLOCK 表提示的比较过程中锁定源表。
-destinationserver destination_server_name[\实例_名称]
目标服务器的名称。 指定 destination_server_name source_server_name SQL Server。 指定_目标_服务器_名称_\_实例_名称_对于命名实例的SQL Server.
-destinationdatabase subscription_database
目标数据库的名称。
-destinationtable destination_table
目标表的名称。
-destinationschema destination_schema_name
目标表的架构所有者。 默认情况下,表所有者假定为 dbo。
-destinationpassword destination_password
使用 SQL Server 身份验证连接到目标服务器时所使用的登录帐户的密码。
重要
可能的话,请在运行时提供安全凭据。 如果必须在脚本文件中存储凭据,则应保护文件以防止未经授权的访问。
-destinationuser destination_login
使用 SQL Server 身份验证连接到目标服务器时所使用的登录帐户。 如果未提供 destination_login ,则连接到该服务器时使用 Windows 身份验证。 请尽可能使用 Windows 身份验证。
-destinationlocked
在使用 TABLOCK 和 HOLDLOCK 表提示的比较过程中锁定目标表。
-b large_object_bytes
大型对象数据类型列中要比较的字节数,这些数据类型包括:text、ntext、image、varchar(max)、nvarchar(max) 和 varbinary(max)。 large_object_bytes 默认为列的大小。 任何大于 large_object_bytes 的数据不会进行比较。
-bf number_of_statements
使用 Transact-SQL -f Transact-SQL 选项时要写入到当前 脚本文件中的 语句数。 当 Transact-SQL 语句数超过 number_of_statements时,将创建一个新的 Transact-SQL 脚本文件。
-c
比较列级差异。
-dt
删除 table_name指定的结果表(如果该表已经存在)。
-et table_name
指定要创建的结果表的名称。 如果该表已经存在,则必须使用 -DT ,否则操作将失败。
-f [ file_name ]
生成 Transact-SQL 脚本,以使目标服务器中的表与源服务器中的表实现收敛。 (可选)可以指定生成的 Transact-SQL 脚本文件的名称和路径。 如果未指定 file_name ,则会在运行实用工具的目录中生成 Transact-SQL 脚本文件。
-o output_file_name
输出文件的完整名称和路径。
-q
通过只比较行数和架构可以执行快速比较。
-rc number_of_retries
实用工具重试失败操作的次数。
-ri retry_interval
两次重试之间的等待间隔(秒)。
-strict
对源架构和目标架构进行严格比较。
-t connection_timeouts
设置与源服务器和目标服务器连接时的连接超时时间(秒)。
返回值
| ReplTest1 | Description |
|---|---|
| 0 | 成功 |
| 1 | 严重错误 |
| 2 | 存在表差异 |
备注
tablediff 实用工具不能用于非SQL Server 服务器。
不支持包含 sql_variant 数据类型列的表。
默认情况下, tablediff 实用工具支持源列和目标列之间的以下数据类型映射。
| 源数据类型 | 目标数据类型 |
|---|---|
tinyint |
smallint、int 或 bigint |
smallint |
int 或 bigint |
int |
bigint |
timestamp |
varbinary |
varchar(max) |
text |
nvarchar(max) |
ntext |
varbinary(max) |
image |
text |
varchar(max) |
ntext |
nvarchar(max) |
image |
varbinary(max) |
使用 -strict 选项可禁止这些映射,并执行严格验证。
进行比较的源表必须至少包含一个主键、标识或 ROWGUID 列。 使用 -strict 选项时,目标表也必须具有一个主键、标识或 ROWGUID 列。
所生成的使目标表实现收敛的 Transact-SQL 脚本不包括下列数据类型:
varchar(max)nvarchar(max)varbinary(max)timestampxml
textntextimage
权限
若要比较表,您必须有要比较的表对象的 SELECT ALL 权限。
若要使用 -et 选项,必须是 db_owner 固定数据库角色的成员,或者在订阅数据库中至少拥有 CREATE TABLE 权限,并且对目标服务器中的目标所有者架构拥有 ALTER 权限。
若要使用 -dt 选项,必须是 db_owner 固定数据库角色的成员,或者至少对目标服务器中的目标所有者架构拥有 ALTER 权限。
若要使用 -o 或 -f 选项,必须对指定的文件目录位置拥有写入权限。
Sqlserver tablediff的简单使用的更多相关文章
- SQLSERVER性能计数器的简单剖析
SQLSERVER性能计数器的简单剖析 今晚看了这篇文章:SQL Server 2012新performance counter:非常实用的Batch Resp Statistics 文章里介绍到SQ ...
- 原创SQlServer数据库生成简单的说明文档小工具(附源码)
这是一款简单的数据库文档生成工具,主要实现了SQlServer生成说明文档的小工具,目前不够完善,主要可以把数据库的表以及表的详细字段信息,导出到 Word中,可以方便开发人员了解数据库的信息或写技术 ...
- 创建并在项目中调用SQLSERVER存储过程的简单示例
使用SQLSERVER存储过程可以很大的提高程序运行速度,简化编程维护难度,现已得到广泛应用.创建存储过程 和数据表一样,在使用之前需要创建存储过程,它的简明语法是: 引用: Create PROC ...
- 原创SQlServer数据库生成简单的说明文档包含(存储过程、视图、数据库批量备份)小工具(附源码)
这是一款简单的数据库文档生成工具,主要实现了SQlServer生成说明文档的小工具,目前不够完善,主要可以把数据库的表以及表的详细字段信息,导出到 Word中,可以方便开发人员了解数据库的信息或写技术 ...
- sqlserver tablediff 实用工具
tablediff 是sqlserver自带的实用工具 sqlserver 2012 在110目录下,sqlserver2008在100目录下 官方参考文档如下: https://docs.micro ...
- 使用asp.net mvc + entityframework + sqlServer 搭建一个简单的code first项目
步骤: 1. 创建一个asp.net mvc 项目 1.1 项目创建好结构如下 2 通过vs安装EntityFramework框架 install-package entityframework 3. ...
- Linux 下面 Sqlserver 2017 的简单安装
1. 公司网络太烂 yum 在线安装失败 2. 解决方法 找微软的官网 百度网盘 离线下载rpm包. https://packages.microsoft.com/rhel/7/mssql-serve ...
- Sqlserver 系统视图简单说明
1. 查看系统视图的sql语句 select * from sys.system_views 2. 查看所有的 dynamic management 视图的sql select * from sys. ...
- SQLserver 一种简单的GUI方式创建DBlink copy 表数据的方法
1. 在sqlserver 上面使用GUI的方式创建dblink 首先打开查询分析器 在如下的位置处右键 -新建连接服务器 输入需要copy数据的服务器 输入ip地址 然后建立连接 在打开查询分析器进 ...
随机推荐
- 让vue-cli脚手架搭建的项目可以处理vue文件中postcss语法
图中&属于postcss的语法,这样书写样式可以清楚的看出选择器之前的层级关系,非常好用. 在利用vue-cli脚手架搭建的项目中如果不配置是不支持这种写法的,这样写不会报错,但是样式不生效. ...
- 实战Performance Monitor监测EnyimMemcached
首先要将EnyimMemcached安装至Windows Performance Counters中. 将Enyim.Caching.dll复制到一个文件夹中 在命令行中进入.NET Framewor ...
- Spring Cloud Config(配置中心)
每天学习一点点 编程PDF电子书.视频教程免费下载:http://www.shitanlife.com/code 一.简介 Spring Cloud Config为分布式系统中的外部配置提供服务器和客 ...
- sku回忆笔记
分类表:(商品分类编号, 分类名称, 父分类编号)(1, 男装, 0)(2, 裤子, 1)(3, 外套, 1)(4, 内裤, 1)(5, 袜子, 1) 商品表:(商品编号, 商品名称, 商品分类编号, ...
- ubantu下Navicat乱码的问题
在官网下载的最新版的Navivat12出现的乱码情况 解决方法:Navicat的文件夹中找到start_navicat用vim编辑,在export LANG=“en_US.UTF-8”这句话改为exp ...
- MyEclipse使用总结——设置MyEclipse开发项目时使用的JDK
安装好MyEclipse之后,在MyEclipse中开发项目时,默认使用的是MyEclipse是自带的JDK,如下图所示: 如果我们需要使用自己安装好的JDK,那么就需要在MyEclipse中重新设置 ...
- 2018-2019-2 20175310实验一《Java开发环境的熟悉》实验报告
2018-2019-2 20175310实验一<Java开发环境的熟悉>实验报告 一.实验步骤及内容 (一).Java开发环境的熟悉-1 1.建立20175310exp1的目录 2.在20 ...
- Vue2.x源码学习笔记-Vue静态方法和静态属性整理
Vue静态方法和静态属性,其实直接在浏览器中可以查看到的,如下 圈起来的是其静态属性,但是有的属性对象中的属性的值又是函数.未圈起来的则是函数. 其实它来自如下各个目录下的js文件 // src/co ...
- FineUIMvc随笔(2)怎样在控件中嵌套 HTML
声明:FineUIMvc(基础版)是免费软件,本系列文章适用于基础版. 用户需求 有网友在<FineUI总群1>问这么一个问题:怎么把 HTML 嵌套在控件中? 这是很多刚学习 FineU ...
- Linux下如何让jar包程序在后台一直执行
Linux下如何让Jar包程序在后台一直执行 shell命令 nohup java -jar xxx.jar & &:让程序后台执行. nohub:让程序控制台输出转移到nohub.o ...
