Слияние двух версий БД с помощью скрипта (получение имен БД в виде переменной) - PullRequest
0 голосов
/ 02 января 2012

Мне нужно объединить 2 БД:

  • 1 - исходная БД.К этой БД были добавлены некоторые таблицы, а некоторые столбцы в другой были изменены - при преобразовании в «БД 2».Эта БД ("1") была обработана, пока были внесены изменения - и мне нужно скопировать эти данные в новую структуру БД.

  • 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

Заранее спасибо!

...