Kopieren einer Tabelle
Um eine Tabelle von einer Datenbank in eine andere zu bringen gehen Sie wie folgt vor:
Beispiel:
Sie haben eine Sicherung der Datenbank auf dem Server mit dem Namen kplus_sicherung, die Datenbank für Kplus heißt kplus. Sie wollen die Tabelle D_ARTIKEL von der Sicherung in die Datenbank kplus kopieren. Die bestehenden Daten werden dabei nicht gelöscht.
-- ------------------------------------------ -- Kopieren einer Tabelle von einer Datenbank in eine andere -- -- Programmierer Rhomberg Martin -- -- Scriptvariablen anpassen @l_Source_DB, @l_Target_DB, @l_table -- -------------------------------------------
DECLARE @l_table_target varchar(200) ,@l_table_source varchar(200) ,@l_cols varchar(8000) ,@l_colname varchar(200) ,@l_sql varchar(8000) ,@l_Source_DB varchar(100) ,@l_Target_DB varchar(100)
SET @l_Source_DB = 'kplus_save'; -- Quell Datenbank SET @l_Target_DB = 'kplus'; -- Ziel Datenbank SET @l_table_source = 'D_LAGER'; -- Tabelle SET @l_table_target = @l_table_source ; -- Tabelle SET @l_cols = '' ; -- Spalten
DECLARE hCur CURSOR FAST_FORWARD FOR
SELECT sys.columns.name from sys.columns inner join sys.objects on sys.objects.object_id=sys.columns.object_id where sys.objects.type='u' and sys.objects.name=@l_table_source
OPEN hCur;
-- Lesen FETCH NEXT FROM hCur INTO
@l_colname;
SET @l_cols = '';
-- Schleife über alle Sätze bis EOF
While @@FETCH_STATUS = 0
BEGIN
IF @l_cols <> ''
SET @l_cols = @l_cols + ','; SET @l_cols = @l_cols + @l_colname; FETCH NEXT FROM hCur INTO @l_colname;
END
CLOSE hCur;
DEALLOCATE hCur;
SET @l_SQL = 'USE ' + @l_Target_DB + CHAR(13) + CHAR(10); SET @l_SQL = @l_SQL + 'SET IDENTITY_INSERT ' + @l_table_target + ' ON' + CHAR(13) + CHAR(10); SET @l_SQL = @l_SQL + 'INSERT INTO ' + @l_Target_DB + '.' + 'dbo' + '.' + @l_table_target + ' (' + @l_cols + ') '; SET @l_SQL = @l_SQL + 'SELECT ' + @l_cols + ' FROM ' + @l_Source_DB + '.' + 'dbo' + '.' + @l_table_source;
PRINT @l_SQL
EXEC (@l_SQL);
|