Это можно сделать, установив параметр -sourceserver утилиты tablediff для первого сервера и параметр -destinationserver для второго сервера. Вы можете использовать sys.Tables для перебора каждой таблицы в базе данных, чтобы вы могли автоматизировать этот процесс.
Отредактировано
Я также хотел бы указать на эту статью , которая является умным куском кода t-sql, который может помочь вам лучше без сложностей с tablediff
Для вашего комментария, вот пример. Это не оптимальный способ сделать это в производственных условиях, но он должен выполнить работу за вас. Возможно, вам лучше реализовать это в SSIS, если вам нужен более производительный вариант.
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