我最近发现了SQL Server 2005的tablediff实用工具。
我有两个相同数据库实例,分别在不同的服务器上。
是否可以使用tablediff比较所有表格,而无需复制相同的命令,只需更改表名即可?
例如,将server1上的table1与server2上的table1进行比较,然后将server1上的table2与server2上的table2进行比较,直到所有表格都被比较为止。
我最近发现了SQL Server 2005的tablediff实用工具。
我有两个相同数据库实例,分别在不同的服务器上。
是否可以使用tablediff比较所有表格,而无需复制相同的命令,只需更改表名即可?
例如,将server1上的table1与server2上的table1进行比较,然后将server1上的table2与server2上的table2进行比较,直到所有表格都被比较为止。
SET QUOTED_IDENTIFIER ON
DECLARE @TableNames as table (
id int identity(1,1),
tableName varchar(100))
DECLARE @sTableDiff nvarchar(1000)
DECLARE @tableName varchar(100)
DECLARE @counter int
DECLARE @maxCount int
INSERT INTo @TableNames
SELECT name
FROM sysobjects WHERE type = 'U'
SET @counter = 1
SELECT @maxCount = COUNT(name)
FROM sysobjects WHERE type = 'U'
WHILE @counter < @maxCount
Begin
SELECT @tableName = tableName
FROM @TableNames
WHERE id = @counter
SET @sTableDiff= ' "C:\Program Files\Microsoft SQL Server\90\COM\tablediff" -sourceserver Server1
-sourceuser sa -sourcepassword password -sourcedatabase YourDatabase -sourcetable ' + @tableName + '
-destinationserver Server2 -destinationuser sa -destinationpassword password -destinationdatabase
YourDatabase -destinationtable ' + @tableName + ' -f c:\Diff'
EXEC XP_CMDSHELL @sTableDiff
Set @counter = @counter + 1
End
尝试使用 dbForge Scheme Compare for SQL Server 和 dbForge Data Compare for SQL Server。它可以比较和同步任何数据库数据和架构。快速、简单,永远提供正确的结果。
在您的数据库上运行它吧!
你可以使用这个选项来运行脚本文件中的 SQL 语句并进行比较吗?我可能错了,只是一个想法。
-bf number_of_statements