2015-04-16 5 views
5

Sto provando a spostare alcune tabelle da un db live a un altro db, che verrà reso live dopo che i dati sono stati trasferiti. Il secondo db esiste su un server con 2008 e la migrazione è a partire dal 2012. che ha causato alcuni problemisql aggiorna i dati in 2 db dal 1 ° db solo dove esiste la tabella

Originariamente ho eseguito un'esportazione DB completa con gli script. perché lo strumento di esportazione non andrebbe alle versioni precedenti. - Dopo l'esportazione completa ho eliminato le tabelle superflue su db2. dato che sto spostando solo 40 circa su 200.

Ora la struttura del DB è impostata, tutto funziona. con dati scaduti. e tutto è pronto per essere cambiato una volta che i dati sono stati aggiornati. Quindi preferirei uno script che controlli se esiste una tabella in db1 in db2, quindi se lo fa per copiare su tutte le righe. È possibile?

+0

è possibile utilizzare uno script 'powershell' per collegarlo al db secondario, ottenere l'elenco delle tabelle e poi fare un' 'bcp fuori di quei tavoli da db dal vivo e quindi 'bcp in' nel db secondario. un semplice script sql non sarà in grado di connettersi a entrambe le istanze a meno che non si desideri utilizzare la route server collegata – ughai

risposta

1

È necessario creare una procedura su DB2 che restituisce un risultato basato sulla tabella si sta controllando:

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 

quindi utilizzare la procedura per controllare DB2 e creare un'istruzione condizionale basata su quella di uscita copiare sul tavolo.

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

Grazie.

+0

la migrazione dei dati tra SQL Server 2008 e SQL Server 2012. L'OP non sarà in grado di chiamare direttamente la procedura. – ughai

+0

Quindi i database sono su server separati? In tal caso è possibile creare un server collegato e configurare RPC. Quindi chiamalo da remoto ... Stessa idea e risultato. –

2

Se la creazione di un server collegato non è un'opzione, è possibile provare a utilizzare la procedura guidata di importazione dei dati del server sql per trasferire i dati da un db a un altro. Utilizzare il seguente Link per how-to: Import data easily in sql server