[MSSQL2005] Integration Services - data flow met temp tabel

Pagina: 1
Acties:

  • P.O. Box
  • Registratie: Augustus 2005
  • Niet online
Hoi,

ik ben bezig om mijn SQL2000 DTS-en om te zetten naar SQL 2005 DTS-en. Ik maak hierbij geen gebruik van de upgrade wizard, omdat die niet alles meeneemt en omdat ik al doende gelijk wat van SSIS wil leren. Nu stuit ik echter op een probleem wat waarschijnlijk heel simpel is... OF waar ik compleet de verkeerde aanpak heb...

de situatie is als volgt:
ik heb een text-file met komma-gescheiden waarden
deze wil ik inlezen in een tijdelijke tabel en dan de "nieuwe" waarden aan mijn echte tabel toevoegen... (het gaat om een tabel waarbij slechts af en toe records worden toegevoegd)
dit doe ik als volgt:
ik heb een tijdelijke tabel gemaakt via "Execute SQL Task" via DROP table A; CREATE table;.
Daarna volgt er een "Data Flow element" waarin de text-file (Flat File Source) naar de tijdelijke tabel wordt gekopieerd (OLE DB Destination).
Daarna voeg ik via een "Execute SQL Task" de nieuwe records toe aan de echte tabel.
Daarna DROP ik de tijdelijke tabel weer.

Dit werkt prima als de tijdelijke tabel al bestaat. Echter als de tijdelijke tabel nog niet bestaat (en dat is in principe altijd zo, aangezien hij aan het eind van de cyclus altijd de tijdelijke tabellen verwijderd), dan krijg ik een Package Validation Error, al VOORDAT hij uberhaupt wat elementen probeert uit te voeren. Deze foutmelding zegt dat de Destination tabel voor de OLE DB Destination niet bestaat. Wat VOOR uitvoer natuurlijk logisch is, omdat die in stap 1 pas aangemaakt wordt.

Ik heb geprobeerd om in de Pre-validation event handler iets af te vangen, maar dat is me niet gelukt. Ik heb geprobeerd een tijdelijke tabel te maken via CREATE TABLE #temp, maar dan kan ik in het OLE DB Destination element niet de #temp tabel aanwijzen als doeltabel. Verder nog wat (gebleken) nutteloze kleine dingetjes geprobeerd, maar tevergeefs. Iemand enig idee wat ik fout doe? of klopt mijn hele structuur misschien niet?

PS. ik kan het natuurlijk werkend krijgen door de tijdelijke tabellen niet tijdelijk te maken, maar dan heb ik zo'n hele meuk tabellen staan die puur voor de import gebruikt worden en verder alleen maar m'n display te vervuilen ;)

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Je kan een IF EXIST op je tabelnaam dan en alleen dan droppen ;)

Overigens zou je die temptabellen ook aan kunnen houden en alleen maar truncaten, ipv elke keer opnieuw aanmaken :)

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


  • P.O. Box
  • Registratie: Augustus 2005
  • Niet online
BtM909 schreef op woensdag 11 april 2007 @ 14:55:
Je kan een IF EXIST op je tabelnaam dan en alleen dan droppen ;)

Overigens zou je die temptabellen ook aan kunnen houden en alleen maar truncaten, ipv elke keer opnieuw aanmaken :)
Dat eerste doe ik ook... despite that... dan nog heb ik in de "data flow" een probleem... het is namelijk niet de DROP die fout gaat, maar de pre-validatie van de gehele control flow.... als hij de pre-validatie over zou slaan zou hij ook gewoon werken, aangezien ik de tabel in de eerste stap al aanmaak (met inderdaad IF EXISTS)...

ik wil de temtabellen dus niet aanhouden, omdat ik dan een behoorlijke lijst temptabellen krijg... kan natuurlijk ook 1 temptabel gebruiken en die steeds weer hergebruiken voor andere imports, maar dat komt het overzicht niet ten goede wat mij betreft...

bedankt voor je reactie!

  • P.O. Box
  • Registratie: Augustus 2005
  • Niet online
Toch maar doorgegoogled... en na heel veel gespeur een oplossing gevonden... dus dit topic kan dicht...

de oplossing is: bij het data flow element het atrtibuut : DelayValidation = true aanzetten.... deze zorgt ervoor dat voor de data flow de validatie pas bij gebruik van het element wordt gedaan... precies wat ik nodig had dus...

TC