[ Sandra_G @ 10.08.2006. 11:31 ] @
Cao! Kako da isprogramiram dts paket iz apliakcije? Na primer, iz aplikacije mi se specificira server, baza i ostalo, i ja treba da uradim export nekih podataka iz te baze u csv fajl. Kako? Hvala! |
[ Sandra_G @ 10.08.2006. 11:31 ] @
[ dusty @ 10.08.2006. 11:45 ] @
Na SQL 2000 mislim da je nemoguce kreirati funkcionalne DTS pakete iz koda.
Da bi pozvala DTS iz koda potrebno je da dodas referencu na COM objekat Microsoft DTS Package Library. [ Sandra_G @ 10.08.2006. 11:55 ] @
Dakle, morala bih da snimim paket iz SQL-a, pa da ga startujem iz aplikacije... To mi nikako ne odgovara... No dobro - uvek je tu dobri stari stream writer, pa vrednost, zarez, vrednost, zarez, vrednost.. novi red, vrednost, zarez, vrednost... :) Ili mozda postoji neki pametniji nacin?
Dusty, hvala! [ Sandra_G @ 10.08.2006. 12:31 ] @
Ajd sad ovako - ako napravim neki dts i sacuvam ga kao dts structure file, da li ja mogu kasnije mu menjam setovanja? Iz aplikacije, naravno...
[ Shaggy @ 11.08.2006. 09:57 ] @
Mislim da bi bilo mnogo lakse snimiti DTS kao VB fajl i onda iz aplikacije mu menjati setovanja....
Ili iz Aplikacije da kreiras VB fajl kakav zelis, i da pokrenes taj fajl Kroz DTS Package Library. [ Sandra_G @ 11.08.2006. 10:06 ] @
Ja sam mislila nesto slicno. Kreiracu DTS, definisacu mu globalne varijable za sve sto treba da se menja, i sacuvacu ga kao structured file. Zatim cu ucitati taj dts paket u kodu, pa cu pristupiti globalnim promenljivim, setovati ih kako mi odgovara, pa boz' pomozi, radice sve kako treba.... Jos samo da provalim taj deo oko pristupanja globalnim promenljivim.... Ako imas neki kod koji bi mi pomogao, to bi bilo ekstra... Odoh da bunarim... :)
[ Shaggy @ 11.08.2006. 11:51 ] @
Nazalost nemam kod sad kod posto sam jako davno nesto cackao oko toga... A trenutno mi nije Instaliran DTS Package Library...ALi po nekom secanju mislim da ne bi bilo problem...
Otprilike bi nekako ovako trebalo da ide...(mozda ce biti sintax gresaka..posto radim rucno i napamet po secanju...) Package2Class pack = new Package2Class(); Pack.LoadFromFile(filename); Pack.GlobalVariables.Item(globProm).Value = Vrednost; Pack.Execute(); Pack.UnInitialize(); Pack = null; I to bi trebalo da radi... [ Sandra_G @ 11.08.2006. 12:33 ] @
Moj kod je sledeci:
Code: Package2Class package = new Package2Class(); Object pVarPersistStgOfHost = System.Reflection.Missing.Value; package.LoadFromStorageFile("someDts.dts", null, null, null, "dtsPackage",ref pVarPersistStgOfHost); foreach (GlobalVariable global in package.GlobalVariables) { switch (global.Name) { case "SourceInitialCatalog": global.Value = DataSourceDatabase; break; } } package.Execute(); foreach (Step2 step in package.Steps) { int outError; string outSource; string outDescription; string out1; int out2; string out3; step.GetExecutionErrorInfo(out outError, out outSource, out outDescription, out out1, out out2, out out3); } package.UnInitialize(); package = null; Dakle, imam dts paket sacuvan negde kao storage file. Vrlo je jednostavan - iz neke tabele treba da prebaci podatke u csv file. Jedina globalna varijabla je InitialCatalog. Medjutim, kada idem step po step, dobijam gresku "Type mismatch. Missing parameter does not have a default value". Pri tom, ja nemam nigde definisane parametre... Imas li pojma sta bi to moglo da bude? [ Shaggy @ 11.08.2006. 14:56 ] @
Probaj da stavis:
object pVarPersistStgOfHost = null; [ Sandra_G @ 14.08.2006. 14:31 ] @
Shaggy, fora je u tome sto treba da se uradi remove globalnih promenljivih, pa se one ponovo dodaju sa njihovim vrednostima. Ispada da je to bug u DTS-u. Izmena u kodu je sledeca:
Code: List<GlobalVariable> lstGlobalVariables = new List<GlobalVariable>(20); foreach (GlobalVariable global in package.GlobalVariables) { lstGlobalVariables.Add(global); } foreach (GlobalVariable global in lstGlobalVariables) { switch (global.Name) { case "SourceInitialCatalog": package.GlobalVariables.Remove(global.Name); package.GlobalVariables.AddGlobalVariable(global.Name, DataSourceDatabase); break; } } package.Execute(); I to sada radi bez problema :) Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|