可以使用SQL 2005的TABLEDIFF工具来生成SQL 脚本

解决方案 »

  1.   

    USE tempdb
    GO--创建测试表
    CREATE TABLE TestTable
    (
    ID int PRIMARY KEY,
    Name varchar(max),
    Age tinyint
    )
    GO--插入测试数据
    INSERT TestTable
    SELECT 1,'John',24
    UNION ALL SELECT 3,'Andy',34
    UNION ALL SELECT 4,'David',51
    GO--创建临时比对表
    CREATE TABLE TestTable_Tmp
    (
    ID int PRIMARY KEY,
    Name varchar(max),
    Age tinyint
    )
    GO--用TableDiff工具比对
    EXEC xp_cmdshell 'tablediff -sourceserver "源服务器" -sourcedatabase "tempdb" -sourceschema "dbo" -sourcetable "TestTable" -sourceuser "sa" -sourcepassword "sa" -destinationserver "目的服务器" -destinationdatabase "tempdb" -destinationschema "dbo" -destinationtable "TestTable_Tmp" -destinationuser "sa" -destinationpassword "sa" -f "F:\Test.sql"'
    GO--读取插入数据脚本
    DECLARE @tmp table(sqlstr varchar(max))
    INSERT @tmp
    EXEC('xp_cmdshell ''type F:\Test.sql''')
    SELECT 
    sqlstr 
    FROM @tmp
    WHERE sqlstr IS NOT NULL
    AND CHARINDEX('--',sqlstr) = 0

    --删除测试表和文件
    DROP TABLE TestTable_Tmp
    DROP TABLE TestTable
    GOEXEC xp_cmdshell 'del F:\Test.sql'
    GO