我需要合并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
提前谢谢!