通过脚本合并DB的两个版本(将DB名称作为变量)

时间:2012-01-02 15:56:59

标签: sql-server database merge sql-server-2000

我需要合并2个DB:

  • 1是原始数据库。对于这个DB,已经添加了一些表,另一些列已经被更改 - 同时转换为“DB 2”。在进行更改时已经处理了这个DB(“1”) - 我需要将这些数据复制到新的DB结构中。

  • 2是目标数据库结构。我需要将DB1中的所有旧+新数据导入其中。

  • 我当然希望以“聪明”的方式执行此操作 - 而不是通过 某种巫师。

  • 我打算包含一个存储过程,它获取表名并将其合并到嵌套循环中。还没有写下来。

  • 我必须使用Sql Server 2000实例(8.0)。

这是我的想法,通常是:

---SET THE ORIGIN AND DESTINATION DBs---
DECLARE @DBorigin varchar(50)
DECLARE @DBdest varchar(50)
declare testd cursor

SET @DBdest = 'DB1'
SET @DBorigin = 'DB2'
-----------------------------------------

DECLARE @DBname varchar(50)

DECLARE OrgDestTables CURSOR FOR
SELECT name
FROM MASTER.dbo.sysdatabases
WHERE NAME = @DBorigin OR NAME = @DBdest

OPEN OrgDestTables
FETCH NEXT FROM OrgDestTables INTO @DBname

WHILE (@@Fetch_Status = 0)
BEGIN
Print @DBname  --(just for control needs)

DECLARE @SelectTablesCmd varchar(70)

/* --THIS SECTION DO NOT WORK 
DECLARE @Cursor1 varchar(8000)
SET @Cursor1 = 
    'DECLARE testd CURSOR FOR
        SELECT name FROM ' + @DBname + '.dbo.sysobjects WHERE Xtype = ''U'''
print (@Cursor1)        
EXEC (@Cursor1)
    */

/*  --THIS WAS THE ORIGINAL TRAIL WHILE I WAS STILL NOT AWARE OF THE FACT
            --THAT I CANT USE THE CURSOR VARIABLE FOR A NESTED ONE 
            --INCLUDED THIS FOR U TO UNDERSTAND MY DESIRE
OPEN OrgDestTables
FETCH NEXT FROM Table1 INTO @DB1Tables

WHILE (@@Fetch_Status = 0)
BEGIN
    Print @DB1Tables

    FETCH NEXT FROM Table1 INTO @DBname
END
*/

    FETCH NEXT FROM OrgDestTables INTO @DBname
END

Close OrgDestTables
Deallocate OrgDestTables

提前谢谢!

0 个答案:

没有答案