2010-08-25 99 views
2

我正在研究SQL Server 2005.我已经完成了备份并恢复了数据库。我只是想知道是否有任何方法可以检查这两个数据库之间的数据是否不同。或者我可以运行或检查的任何脚本[可以按表格]查看是否添加或修改了任何新行。两个数据库之间的数据差异

EDITED

例如 - 我要检查从数据库1 Table_User到数据库2 Table_User的数据的差。

感谢

+0

数据库在表格和行数方面有多大? – spbfox 2010-08-25 06:10:57

+0

只有2-3个表格很大,大约有一万行 – Zerotoinfinity 2010-08-25 06:27:48

回答

0

您可以使用内置的命令行工具TableDiff.exe:

http://msdn.microsoft.com/en-us/library/ms162843(SQL.90).aspx

它与列级比较一起执行按行比较一行。下面是走过了如何使用它的一篇文章:

http://www.databasejournal.com/features/mssql/article.php/3594926/SQL-Server-2005-TableDiff-Utility.htm

而另一位(一个链接到一个GUI,您可以下载):

http://weblogs.sqlteam.com/mladenp/archive/2007/03/03/60125.aspx

这将是一个表以表为基础 - 但它是免费的,并且已安装,因为您已安装SQL Server 2005。希望这可以帮助!

+0

我是否需要打开Microsoft .NET Framework v2.0 SDK命令提示符? 或 运行> cmd – Zerotoinfinity 2010-08-25 06:22:00

+1

此处应该安装:'C:\ Program Files \ Microsoft SQL Server \ 90 \ COM \ TableDiff.exe'(根据安装SQL Server的方式可能有所不同)。我相信,只是一个基本的运行> cmd应该这样做。它是安装的客户端工具的一部分。 – 2010-08-25 06:35:01

0

可以使用SQL比较和SQL数据比较。(red-gate.com) 或者您可以使用SQL三角洲。(sqldelta.com)

0

我想你要跟踪哪些恢复了更改数据库与恢复之前的数据库进行比较。如果是这样,我希望这可能会有所帮助。

ALTER DATABASE yourdatabasename SET CHANGE_TRACKING = ON (CHANGE_RETENTION = 2 DAYS, AUTO_CLEANUP = ON); 
GO 
USE yourdatabasename; 
GO 
ALTER TABLE Person.Person ENABLE CHANGE_TRACKING 
WITH (TRACK_COLUMNS_UPDATED = ON); 
GO 
+0

这将是什么输出?我的意思是,我担心它不会更新任何一个数据库..它会更新我的数据库? – Zerotoinfinity 2010-08-25 06:34:55

+0

不,它不会。它只是跟踪什么两个数据库 – daydream 2010-08-25 06:40:48

+0

我已经使用这个 ALTER DATABASE StudentOld SET CHANGE_TRACKING =之间被改变了 (CHANGE_RETENTION = 20天,AUTO_CLEANUP = ON); GO USE studentNew;使用 (TRACK_COLUMNS_UPDATED = ON)启用CHANGE_TRACKING; GO 我得到低于错误 发生致命的脚本错误。 解析GO时遇到语法错误。 – Zerotoinfinity 2010-08-25 06:58:04

相关问题