热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

用TableDiff产生SQLServer同步脚本

TableDiff是一个把持台,它可以在SQLServer的表之间进行数据比拟。另外,由于它是用SQLServer打包的,所以假如你想在不同的数据库环境下检查查找表的话,你就不需要另外购置其他工具

TableDiff是一个把持台,它可以在SQL Server的表之间进行数据比拟。另外,由于它是用SQL Server打包的,所以假如你想在不同的数据库环境下检查查找表的话,你就不需要另外购置其他工具。

在不同的数据库环境中,DBA经常不得不在查找表中寻找它们的不同(例如:开发、质量保证和生产等不同的环境下)。这些查找表中的数据必需适应于所有的环境,这样才干确保测试的准确。

在市场上有一些非常好的工具可以进行这些比拟,也能履行很多其它功效。但是现在你不需要往购置它们了,由于SQL Server已经自带了这种工具,那就是TableDiff,它能为你完成这些功效。

TableDiff使你可以很轻松地在表中进行数据比拟,同时它也可以会为你创立脚本来同步程序环境。另外,作为一个能使查找表在测试环境和产品环境之间同步的优良工具,TableDiff对于数据在产品服务器和复制服务器之间的同步也同样是非常有用的,这样,当产生复制标题的时候,它就能体现出上风了。

示例

TabelDiff是一个把持台利用软件,所以,你需要通过命令提示符、批处理文件或者通过应用xp_cmdshell的SQL Server来调用它。在这个例子中,我将在同一个服务器上的两个数据库之间搭建一个小的环境,然后比拟两个表中的数据。在这里我是通过一个批处理文件来调用TableDiff。

Listing A中的脚本创立了两个数据库,并在每个数据库中创立了一个SourceTable表。然后将数据分辨插进到每个环境中的SourceTable表里面,这时候,插进到两个表中的数据是明显不同的。(就我的SQL Server 2005环境而言,TableDiff在这个目录下:C:Program FilesMicrosoft SQL ServerCOM。文件的地位对你指定安装是非常重要的,由于你调用批处理文件进行创立的时候需要知道它的确实地位。
 
批处理文件

在这个例子中,我将调用TableDiff utility,同时带上了一些必要的参数,对DatabaseA和DatabaseB两个数据库中各自的SourceTable表的数据进行比拟。Listing B中的脚本带着参数通过源服务器(SourceServer)、源数据库( SourceDatabase)、源表 SourceTable、目标服务器( DestinationServer)、目标数据库( DestinationDatabase)和目标表(DestinationTable)达到TableDiff utility。对于每一个站点来说,服务器名和表名都是雷同的,由于我是在同一个数据库服务器的两个不同的数据库中比拟应用的同一个名字的表。我通过的最后目标地是当地,同步脚本放置在那里。我将这个脚本存放在C:/根目录下,名字为diffs.txt。

一旦我履行了这个批处理文件,在Listing C中的文本信息就会被放到C:diffs.txt这个文件里面。这个TSQL脚本能同步运行两个数据库之间的表。

应用简略

TableDiff utility应用非常简略,配置也很方便,由于它是用SQL Server打包的,所以不需要购置任何其他附加的工具来同步不同环境下的表。由于它应用非常方便,也很轻易获得它,所以假如有必要,我们就能应用它来开发一些解决计划主动创立脚本,以便同步不同的环境。

Tim Chapman是一位SQL Server数据库治理员,他现在在Louisville, KY的一家银行工作,他具有7年以上的IT经验,同时也获得了微软SQL Server 2000和SQL Server 2005认证。
 
列表A

以下为引用的内容:
use master
Go
IF DB_ID('DatabaseA') IS NOT NULL     DROP DATABASE DatabaseA
GO
IF DB_ID('DatabaseB') IS NOT NULL     DROP DATABASE DatabaseB
GO
CREATE DATABASE DatabaseA
GO
CREATE DATABASE DatabaseB
GO
USE DatabaseA
GO
CREATE TABLE SourceTable
(     IDCol INT IDENTITY(1,1),     Field1 SMALLINT,     Field2 SMALLINT,     Field3 SMALLINT,     Field4 SMALLINT  
)
GO
USE DatabaseB
GO
CREATE TABLE SourceTable
(     IDCol INT IDENTITY(1,1),     Field1 SMALLINT,     Field2 SMALLINT,     Field3 SMALLINT,     Field4 SMALLINT  
)
GO
USE DatabaseA
GO
INSERT INTO SourceTable
(Field1, Field2, Field3, Field4)
SELECT 1, 1, 1, 2
UNION
SELECT 1, 1, 2, 2
UNION
SELECT 1, 3, 2, 2
UNION
SELECT 1, 3, 2, 2
UNION
SELECT 4, 3, 2, 2
GO
USE DatabaseB
GO
INSERT INTO SourceTable
(Field1, Field2, Field3, Field4)
SELECT 1, 1, 1, 2
UNION
SELECT 1, 3, 2, 1
UNION
SELECT 1, 3, 2, 2
UNION
SELECT 1, 3, 2, 2
UNION
SELECT 5, 3, 2, 2
UNION
SELECT 5, 4, 3, 2
GO

列表B

以下为引用的内容:

cd Program FilesMicrosoft SQL ServerCOMTableDiff -sourceserver "DatabaseServer" -sourcedatabase "DatabaseA" -sourcetable "SourceTable" -destinationserver "DatabaseServer" -destinationdatabase "DatabaseB" -destinationtable "SourceTable" -f "C:diffs.txt"
PAUSE




推荐阅读
  • 本文详细探讨了在Windows Server 2003环境下遇到MySQL连接失败(错误代码10061)的解决方案,包括通过卸载特定的Windows更新和调整系统注册表设置的方法。 ... [详细]
  • 探讨在数据库中存储URL时,删除尾部斜杠的安全性和潜在影响,以及如何确保URL的一致性。 ... [详细]
  • Elasticsearch基础操作指南:使用Postman进行数据管理
    本文将介绍如何利用Postman工具执行基本的日志写入和数据管理操作。通过本教程,您将了解如何连接至Elasticsearch服务,创建索引,存储及检索数据。 ... [详细]
  • 应用程序配置详解
    本文介绍了配置文件的关键特性及其在不同场景下的应用,重点探讨了Machine.Config和Web.Config两种主要配置文件的用途和配置方法。文章还详细解释了如何利用XML格式的配置文件来调整应用程序的行为,包括自定义配置、错误处理、身份验证和授权设置。 ... [详细]
  • 致信息安全爱好者的成长指南
    本文旨在为信息安全爱好者提供一份详尽的成长指南,涵盖从学习心态调整到具体技能提升的各个方面。 ... [详细]
  • 本文探讨了为何采用RESTful架构及其优势,特别是在现代Web应用开发中的重要性。通过前后端分离和统一接口设计,RESTful API能够提高开发效率,支持多种客户端,并简化维护。 ... [详细]
  • 尝试从 MySQL 转向 SQL Server 2008 时遇到了安装错误,提示“系统配置未能初始化”,错误代码为 0x84B10001。怀疑可能是由于之前的 MySQL 安装残留导致的注册表问题。寻求专家建议。 ... [详细]
  • 使用DataGridViewComboBoxColumn实现数据绑定与操作
    本文详细介绍如何在DataGridView中使用DataGridViewComboBoxColumn来加载、选择和保存数据库中的数据,提供具体的实现步骤和示例代码。 ... [详细]
  • 深入理解FastDFS
    FastDFS是一款高效、简洁的分布式文件系统,广泛应用于互联网应用中,用于处理大量用户上传的文件,如图片、视频等。本文探讨了FastDFS的设计理念及其如何通过独特的架构设计提高性能和可靠性。 ... [详细]
  • mysql 分库分表策略_【数据库】分库分表策略
    关系型数据库本身比较容易成为系统瓶颈,单机存储容量、连接数、处理能力都有限。当单表的数据量达到1000W或100G以后,由于查询维度较多, ... [详细]
  • 解析程序员与软件工程师的角色差异
    本文深入探讨了程序员与软件工程师之间的主要区别,包括它们的职业定位、技能要求以及工作内容等方面的不同,旨在帮助读者更好地理解这两个角色的特点。 ... [详细]
  • 统计报表模板及其实现方法
    本文介绍两个实用的统计报表模板,并提供如何将这些静态模板转换为动态JSP页面的方法。同时,文中附上了详细的代码示例。 ... [详细]
  • 解析骁龙660AIE与骁龙660的主要差异
    随着智能手机市场的不断发展,处理器技术也在不断进步。近期,一些手机开始采用骁龙660AIE处理器,这引发了消费者对其与标准版骁龙660之间差异的好奇。本文将详细探讨这两款处理器的区别,帮助您更好地了解它们各自的特点。 ... [详细]
  • 本文介绍了三款实用的Chrome插件:Gooreplacer用于加速访问依赖特定外部接口的网站;HTTP Request Blocker帮助过滤无法加载的图片请求;Browse Manager则能有效阻止恼人的弹出广告。通过合理配置这些工具,可以显著提升上网体验。 ... [详细]
  • 本文介绍了如何在 Framework7 中通过 AJAX 技术动态加载页面内容,确保用户在点击导航链接时能够顺利加载目标页面。 ... [详细]
author-avatar
zuoyi88713
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有