大佬教程收集整理的这篇文章主要介绍了Sqlserver tablediff的简单使用,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
1. 先列举一下自己简单的比较语句
tablediff -sourceserver 10.24.160.73 -sourcedatabase cwbasemi70 -sourcescheR_481_11845@a lcmi709999 -sourcetable gspuser -desTinationserver 10.24.160.94 -desTinationdatabase cwbasemi70 -desTinationscheR_481_11845@a lcmi709999 -desTinationtable gspuser -Strict
效果为:
如果简单对比的话 可以使用:
注意一下官网的说明:
tablediff 实用工具用于比较两个非收敛表中的数据,它对于排除复制拓扑中的非收敛故障非常有用。 可以从命令提示符或在批处理文件中使用该实用工具执行以下任务:
在充当复制发布服务器的 @H_124_75@microsoft sql Server 实例中的源表与充当复制订阅服务器的一个或多个 sql Server 实例中的目标表之间进行逐行比较。
@H_489_86@通过只比较行数和架构可以执行快速比较。
执行列级比较。
生成 transact-sql 脚本,用以修复目标服务器中的差异,以使源表和目标表实现收敛。
将结果记录到输出文件或目标数据库的表中。
tablediff [ -? ] | { -sourceserversource_server_name[\instance_name] -sourcedatabasesource_database-sourcetablesource_table_name [ -sourcescheR_481_11845@asource_Schema_name ] [ -sourcepasswordsource_password ] [ -sourceusersource_login ] [ -sourcelocked ] -desTinationserverdesTination_server_name[\instance_name] -desTinationdatabasesubscription_database-desTinationtabledesTination_table [ -desTinationscheR_481_11845@adesTination_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
正在检查的源表的名称。
-sourcescheR_481_11845@a 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
目标表的名称。
-desTinationscheR_481_11845@a 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 ]
@H_653_404@生成 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 | @H_982_489@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) |
进行比较的源表必须至少包含一个主键、标识或 ROWGUID 列。 使用 -Strict 选项时,目标表也必须具有一个主键、标识或 ROWGUID 列。
所生成的使目标表实现收敛的 transact-sql 脚本不包括下列数据类型:
若要比较表,您必须有要比较的表对象的 SELECT ALL 权限。
若要使用 -et 选项,必须是 db_owner 固定数据库角色的成员,或者在订阅数据库中至少拥有 create table 权限,并且对目标服务器中的目标所有者架构拥有 ALTER 权限。
若要使用 -dt 选项,必须是 db_owner 固定数据库角色的成员,或者至少对目标服务器中的目标所有者架构拥有 ALTER 权限。
若要使用 -o 或 -f 选项,必须对指定的文件目录位置拥有写入权限。
以上是大佬教程为你收集整理的Sqlserver tablediff的简单使用全部内容,希望文章能够帮你解决Sqlserver tablediff的简单使用所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。