Új hozzászólás Aktív témák
-
leslie23
tag
Sziasztok!
Segítséget, vagy magyarázatot szeretnék kérni tőletek a következő probléma kapcsán, StackOverflow relevánsnak tűnő kérdéseit már átnyálaztam, de nem találtam számomra választ. Van egy WinForms alkalmazás, amivel SQL queryket szeretnék végrehajtani (kb. 70-80 darabot, egyenként 5-15 másodperc az execution time) a lekérdezések eredményeit pedig Excel-állományokba menteni. Nem parallel async végrehajtás működik, viszont kicsit tempósítandó a dolgokat átírtam Parallel.Foreach segítségével, a szimultán szálakat 15 darabban maximalizálom. Az SqlConnection using blokkban van, ennek ellenére az alábbi hibaüzenetet kapom: "The timeout period elapsed prior to obtaining a connection from the pool. This may have occurred because all pooled connections were in use and max pool size was reached."
Ha a connection stringbe belefoglalom a Connection Timeout = 0 paramétert, akkor megintcsak lefut szépen a cucc. Próbáltam szintén a connection stringben állítani a Max Pool Size-et de nem volt hatása. Sajnos nem értem, hogy pontosan mi történik, ha jól értem a using végén a kapcsolat zárásra kerül és bekerül a connection poolba. Viszont ezután miért történik timeout, mikor a következő szálon ismét szükség lenne a connectionre?
Illetve ha Timeout van, miért nem tud új kapcsolatot létrehozni?Köszönöm, ha valaki rá tud világítani mi itt a kulcs.
És egyből egy másik kérdésem is lenne; a Excelt az Interop liben keresztül kezelem. Neten azt találtam, hogy maga a COM Interop nem thread safe, feltételezem ez az oka annak, hogy parallel futásnál időnként COM error, application busy üzenetet kapok (5 futásból egyszer). Alternatív megoldásként felmerült, hogy a parallel végrehajtásnál csak egy DataSetben tárolnám a lekérdezések eredményeit, majd ezt követően egy külön műveletben sorosan generálnám le az Excel-riportokat. A kérdésem, hogy mennyire célszerű nagy mennyiségű adatot (pl. 80 query, egyenként 30-40 mező és 10-12 ezer rekord) memóriában tárolni míg elér a folyamat az Exceles lépésig?
Vagy mi lehet itt best practice szerintetek?
Új hozzászólás Aktív témák
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- Hálózati / IP kamera
- Pánik a memóriapiacon
- Synology NAS
- BestBuy ruhás topik
- NVIDIA GeForce RTX 5070 / 5070 Ti (GB205 / 203)
- Autós topik
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- Audi, Cupra, Seat, Skoda, Volkswagen topik
- Jövő héten mutatkozik be a OnePlus új szériája
- Milyen egeret válasszak?
- További aktív témák...
- Gamer PC - Intel i7-10700K, RTX 3070, 32GB DDR4 RAM
- BONTATLAN! Samsung Q800F 5.1.2 ( HW-Q800F/EN 5.1.2) hangprojektor/soundbar/hangszóró
- Gigabyte RTX 4070 Super Windforce OC 12 GB (2 év garanciával)
- Új, csomagolássérült Philips, TrueLife, Lovi cumisüveg melegítők/sterilizáló/mellszívó - garival! -
- Sok garis asztali gép! ( 7950X3D, Nito+ 9070XT, 32 GB , 1 TB, 850 80+Platinum ) + LG OLED monitor
- Honor 90 512GB, Kártyafüggetlen, 1 Év Garanciával
- Samsung Galaxy A50 128GB, Kártyafüggetlen, 1 Év Garanciával
- VICC ÁR! Dell Precision 7530 - Xeon E2186M (i9-8950HK++) / 32GB RAM 512GB SSD Quadro P2000
- 154 - Lenovo LOQ (15IRX9) - Intel Core i5-13450HX, RTX 4060
- Bomba ár! Lenovo X1 Yoga 3rd - i5-8GEN I 8GB I 256GB SSD I 14" FHD Touch I W11 I CAM I Garancia!
Állásajánlatok
Cég: Laptopszaki Kft.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Illetve ha Timeout van, miért nem tud új kapcsolatot létrehozni?
Vagy mi lehet itt best practice szerintetek?
