2015-04-16 7 views
5

Ich versuche, einige Tabellen von einer Live-Datenbank in eine andere DB zu verschieben, die dann live geschaltet wird, nachdem die Daten übertragen wurden. Die zweite db existiert auf einem Server mit 2008, und die Migration ist von 2012. Das hat ein paar Probleme verursachtsql Aktualisiere Daten in der 2. db von der 1. db nur wo die Tabelle existiert

Ursprünglich habe ich einen vollständigen DB-Export mit Skripten. weil das Export-Tool nicht zu früheren Versionen wechseln würde. - Nach dem vollständigen Export habe ich die überflüssigen Tabellen auf db2 gelöscht. da ich nur 40 von etwa 200 verschiebe.

Jetzt ist die DB-Struktur eingerichtet, alles funktioniert. mit veralteten Daten. und alles ist bereit, um geschaltet zu werden, sobald die Daten auf dem neuesten Stand sind. Daher würde ich im Idealfall ein Skript mögen, das überprüft, ob eine Tabelle in db1 in db2 existiert, und ob es dann über alle Zeilen hinweg kopiert. Ist das möglich?

+0

Sie können ein 'Powershell' Skript verwenden, um es mit sekundären db zu verbinden, erhalten Sie die Liste der Tabellen und dann ein' bcp out 'dieser Tabellen von Live-db und dann 'bcp in' in der sekundären db. Ein einfaches SQL-Skript kann keine Verbindung zu beiden Instanzen herstellen, es sei denn, Sie möchten die Verbindungsroute – ughai

Antwort

1

Sie müssen ein Verfahren auf DB2 erstellen, die ein Ergebnis basierend auf der Tabelle zurückgibt Sie überprüfen:

USE [DB2] 

CREATE PROCEDURE DBO.CHECKDB2TABLE 

@TABLENAME NVARCHAR(50) 

AS 

IF EXISTS (
    SELECT * FROM INFORMATION_SCHEMA.COLUMNS 
    WHERE (TABLE_NAME = @TABLENAME) 
) 
    BEGIN 
     SELECT 'TRUE' 
    ELSE 
     SELECT 'FALSE' 
    END 

dann die Prozedur verwenden, DB2 zu überprüfen und eine bedingte Anweisung erstellen auf der Grundlage dieser Ausgabe über den Tisch kopieren.

EXEC DB2.dbo.CheckDB2Table @TABLENAME='Tablename' 

Danke.

+0

mit der Datenmigration zwischen SQL Server 2008 und SQL Server 2012 verwenden. OP kann die Prozedur nicht direkt aufrufen. – ughai

+0

Also sind die Datenbanken auf separaten Servern? In diesem Fall können Sie einen Verbindungsserver erstellen und RPC konfigurieren. Dann rufe es aus der Ferne an ... Gleiche Idee und Ergebnis. –

2

Wenn das Erstellen eines Verbindungsservers keine Option ist, können Sie versuchen, den SQL Server-Importdatenassistenten zu verwenden, um Daten von einer Datenbank in eine andere zu übertragen. Verwenden Sie den folgenden Link für how-to: Import data easily in sql server

Verwandte Themen