Come superare l'errore vs_needsnewmetadata nell'attività Flusso di dati?


5

Ho un pacchetto SSIS che copia i dati in una tabella da uno SQL Server 2005 a un altro SQL Server 2005. Lo faccio con un'attività "Flusso di dati". Nel file di configurazione del pacchetto espongo il nome della tabella di destinazione.

Il problema si verifica quando si modifica il nome della tabella di destinazione nel file di configurazione (tramite Blocco note) Viene visualizzato il seguente errore "vs_needsnewmetadata". Penso di aver capito il problema ... il mapping della colonna della tabella di destinazione è stato risolto quando ho configurato il pacchetto per la prima volta.

Domanda: qual è il modo più semplice per fare quanto sopra con un pacchetto ssis?

Ho letto in linea circa l'impostazione dei metadati a livello di codice e tutti, ma mi piacerebbe evitare questo. Inoltre ho scritto una app per console C# che fa tutto bene ... tutte le tabelle ecc. Sono specificate in app.config ... ma a quanto pare questa soluzione non è abbastanza buona.

0

Se tutto ciò che si sta facendo è copiare i dati da un server SQL2005 a un altro, creerei un server collegato e utilizzerò un proc memorizzato per copiare i dati. Un pacchetto SSIS è eccessivo.

How to Create linked server

Una volta creato il server collegato si farebbe proprio programma qualcosa di simile ...

INSERT INTO server1.dbo.database1.table1(id,name) 
SELECT id, name FROM server2.dbo.database1.table1 

quanto il pacchetto SSIS che ho sempre avuto per riaprire e ricostruire il pacchetto in modo che la meta i dati vengono aggiornati quando si modificano le proprietà della colonna delle tabelle.


1

Verificare se la nuova tabella di destinazione ha le stesse colonne di quella precedente.

Credo che l'errore si verifichi se le colonne sono diverse e la destinazione non può più mappare le colonne di input alle colonne della tabella. Se due tabelle hanno lo stesso schema, questo errore non dovrebbe verificarsi.


6

Hai impostato DelayValidation su False nelle proprietà Destinazione origine dati? Altrimenti, provalo.

Modifica: Ovviamente questo deve essere Ritardato a Vero, quindi va avanti e tenta invece di controllare. Inoltre, invece di modificare il pacchetto nel Blocco note, perché non inserire il nome della tabella in una variabile, inserire la variabile in un'espressione sulla destinazione, quindi esporre la variabile in un file di configurazione .DtsConfig? Quindi puoi cambiarlo senza pericolo.


2

La colonna di destinazione della fonte di corrispondenza con distinzione tra maiuscole e minuscole ha svolto il lavoro per me.

come nel mio caso era SrNo_prod colonna dev e usarlo abbiamo sviluppato il dtsx, mentre è stato creato come SrNo_Prod in prod, dopo aver effettuato il cambiamento caso P-p, abbiamo ottenuto corretta esecuzione di pacchetto.