Registrace nového uživatele     Návod     Kluby     Archív  Lopuchu     Lopuch.cz  

Diskuze na Lopuchu,
pohlazení na duchu

Lopuch.cz

Jméno:
Heslo:
Podpora LCD:
 
Klub Visual Basic [ŽP: neomezená] (kategorie Programování) moderuje Rider.
Archiv

Visual Basic, VBScript, ASP, VB.NET a dalsi...

Informační zdroje: Tipy na vaše oblíbené stránky můžete směřovat do Riderovy pošty
  Nastavení klubu     Nastavení práv     Homepage     Anketa     Přítomní     Oblíbené     Lopuch     Kategorie  
autor: 
text: 
vyplnit a 
Help

Nemáte právo psát do tohoto klubu.

[ 94 ] <Novější  <<<Nejnovější  Nejstarší>>>  Starší>  
zephid 4.9.2006 10:27  112
Mas pravdu,ted mi to taky doslo,jeste driv nez jsi mi to napsal:-)Jsem ale trubka:-)
nekromancer 4.9.2006 07:29  111
ZephidJistěže ale proč bys to dělal? Stačí to otevřít přes jeden databázový driver a uložit přes druhý.
zephid 4.9.2006 06:36  110
dotazZdravim,mam takovou prosbu. Ve Visualu teprve zacinam a tudiz toho moc nevim a neumim.Mam otazku, da se naprogramovat prevod tabulky ve formatu TXT to excelu?Diky moc za rady...
rider Rider - Asociace chovatelů antropomorfních koní 25.8.2006 13:50  109
TomKasMám dojem, že si v podstatě píšete vlastní BizTalk server...

Nicméně pořád jsem nepochopil, proč to sakra děláš jako službu? Služba (pokud se tedy bavíme o daemonovi, Windows Service) je vhodná pokud funguje jako server (tj. v předem neznámých intervalech se na ni někdo připojuje) a nebo vykonává nějaké činnosti pravidelně v krátkých intervalech. Spustí se jednou při startu systému a běží na pozadí.

Pro daný úkol by mi přišlo jednodušší napsat jednoduchou konzolovou aplikaci, která se bude spouštět čas od času přes task scheduler. Parametry bude číst normálním způsobem z příkazové řádky, tj. v C# je dostane jako argument metody Main, ve VB.NET je načteš přes System.Environment.GetCommandLineArguments.

tomkas TomKas Silent Spring 24.8.2006 07:06  108
Ještě jedna důležitá informace:

Všechny popsané ulož. procedury jsou fyzicky na SQL serverech jednotlivých firem, tedy ne na centrálním serveru. Na centrále jsou pouze informace o zpracování dat jednotlivými firmami, o počtu stažených vět atd. A navíc zde funguje aplikace (s grafickým rozhraním), která slouží ke zprávě dat. přenosů firem (je možné zakazovat či povolovat určitý typ přenosu pro určité firmy, sledovat log, aktualizovat uložené procedury na vzdálených serverech, atd).

tomkas TomKas Silent Spring 24.8.2006 06:59  106
RiderDíky za reakci.
Jde o program který se má starat o přenosy datových souborů různých typů z určitého (centrálního) serveru směrem k cílovým serverům firem, které jsou rozmístěny po celé ČR. Nejde ovšem o jednoduché kopírování souborů. Během přenosu z centrálního serveru často dochází k různým transformacím a úpravám v datech a tak mnohdy to co se stáhne ze zdroje a naimportuje na cílové počítače má pozměněnou podobu. Mám-li být konkrétní, jde např. o následující data (faktury, dodací listy, ceníky, různá anketní data atd.)
Celý systém běží na SQL serverech a doteď jsem používal DTS na SQL serveru, jenž bylo časováno pomocí jobu. Nicméně po zkušenostech a různých úpravách se toto ukázalo jako víceméně nespolehlivé.

Proto došlo k přepracování tak, že jednotlivé datové přenosy obstarávají konkrétní uložené procedury na SQL serverech všech firem. Nad těmito specifickými uloženými procedurami je jedna centrální, která je časovaná jobem a v pravidelných intervalech se spouští, přičemž se vždy dotazuje na centrální server, zda jsou k dispozici nová data a pokud ano, zjistí, zda jde např. o faktury a pokud ano, předá řízení uložené proceduře určené ke zpracování faktur. Po ukončení přenosu tato hlavní ul. procedura zapíše na centrální server do logu informaci o průběhu stahování (kolik se stáhlo záznamů, zda byl přenos úspěšný či nikoliv a pokud nebyl, k jaké chybě došlo). A tady je kámen úrazu. Všechny servery jsou navzájem propojeny, nicméně z důvodu bezpečnosti ne jako linked servery. Z toho vyplývá nutnost používat pro vzdálené provádění SQL příkazů OPENROWSET s použitím SQLOLEDB nebo MSDASQL. A pokud dojde během zpracování k chybě na straně vzdáleného počítače, není takto vzniklou chybu možné odchytit (alespoň jsem na to doposud nepřišel) a celý systém zhavaruje (informace o chybě se nepředá z ulož. procedury pro zpracování faktur nadřízené hlavní proceduře). Jinými slovy se mi nepodařilo zjistit, jak odchytit a zpracovat v transact SQL chybu vyvolanou uvnitř poskytovatele datového připojení.

Proto se snažím celý systém předělat tak, že výše zmíněnou hlavní proceduru naprogramuji v .NETu a zabalím ji do služby (kterou je možné časovat a kde je možné chybové stavy ošetřovat bez problémů uvnitř bloku TRY-CATCH). Toto opravdu funguje, ale teď k těm parametrům, o kterých jsem psal. Pokud bude služba spuštěna bez jakéhokoliv parametru, budu se stahovat všechna dostupná data. Pokud bude službě předán název uložené procedury pro zpracování faktur, budou stažena pouze data faktur.

Přiznám se, že v .NETu jsem zatím začátečník a možná existuje i jiná a jednoduchá pomoc. Jakékoliv náměty či návrhy uvítám.

Díky.
rider Rider - Asociace chovatelů antropomorfních koní 24.8.2006 00:19  105
A chceš to předávat kdy? V okamžiku startu služby? V tom případě je rozumné a systémové řešení zapsat to do registru, do větve HKLM\SYSTEM\CurrentControlSet\Services\Název_tvojí_služby\Parameters. Pokud nějak dynamicky za běhu, tak musíš použít nějakou vhodnou formu IPC, což může být cokoliv od named pipes přes remoting po XML-RPC.

Jinak nechceš se s námi podělit o širší obraz? Možná je to jenom moje paranoia, ale cítím z tvého dotazu, že se možná jedná o nějaké zoufalé drbání levou nohou za pravým uchem a týrání počítačů, a že by možná bylo lepší se vydat jinou cestou...

tomkas TomKas Silent Spring 23.8.2006 15:50  104
Mira,RiderJde o to, abych té službě předával název uložené procedury na SQL serveru, kterou má spustit.

rider Rider - Asociace chovatelů antropomorfních koní 23.8.2006 15:13  103
Přijde na to, co se přesně rozumí tím "vstupním parametrem"...
mira Mira Optimista se učí anglicky - pesimista rusky a realista střílet... 23.8.2006 15:07  102
VB na to ma primo funkci, ktera vrati parametry s kterymi byl program spusten... z hlavy nevim, ale urcite ji najdes - nebo to pujde pres API
tomkas TomKas Silent Spring 23.8.2006 14:33  101
Zdravím,

nemáte někdo zkušenosti s psaním windowsové služby, která by přijímala nějaký parametr? Potřebuji napsat jednoduchou službu, která by reagovala na vstupní parametr.

Díky za jakékoliv informace.
edmundl 14.8.2006 13:14  100
NA právech to nezáleží, žádná nepoužívám. Už jsem zjistil čím to bylo, bylo to tím, že můj program v určitých případech sestavoval špatně connection string pro napojení ado data control prvku.
petrh petrh Mluviti stříbro, slyšeti zlato - >HOLUBNÍK< 13.8.2006 18:57  99
edmundlCo přístupová práva k příslušnému *.mdb souboru?
edmundl 13.8.2006 16:14  98
MAm program, ktery umi ruzne veci s mdb souborem. Problem je vtom, ze s nekterymi mdb soubory to pracuje dobre ale s nekterymi mi to hazi ruzne chyby, treba ze nemuze najit nejakou ISAM metodu pri otevirani tabulky. Mam podezreni, ze by to mohlo byt zavisle na verzi mdb souboru, jestli pochazi z Accesu 97 nebo 2000. Jak mohu nejak programove zjistit verzi mdb souboru? Ten program je zatim postaven na ADO a ADOX. Tento problem bych celkem umel resit pomoci DAO, ale nechce se mi michat technologie v ramci jednoho programu.

[ 94 ] <Novější  <<<Nejnovější  Nejstarší>>>  Starší>  

(c) 2001-2011 Lopuch.cz   
Kontakt