9.03.2008

Antisipasi Time Out dengan Cara Barbar

Hari ini berhadapan dengan time out SQL Server, yg bikin program saya melempar eksepsi dan berhenti melakukan tugas mulianya, mendownload ratusan ribu PO dari SAP untuk web reporting. Time out delete statement.

delete from sap_mseg where mblnr in (select mblnr from sap_mkpf where status = 'NEW')

Apa akal?
For i = 0 To 1000
delete from sap_mseg where mblnr in (select TOP 1000 mblnr from sap_mkpf where status = 'NEW')
End For

Tau dimana salahnya? TOP 1000 itu membuat record yang di select itu-itu aja, kemungkinan besar sudah di delete di looping pertama. Dan looping kedua sampai ke 1000 akan menghasil 0 records affected. Selanjutnya?
For i = 0 To 1000
delete TOP (1000) from sap_mseg where mblnr in (select mblnr from sap_mkpf where status = 'NEW')
End For

Lalu untuk mengantisipasi looping 1000 kali masih menyisakan record yang belum terdelete:
delete from sap_mseg where mblnr in (select mblnr from sap_mkpf where status = 'NEW')

Barbar ya? Ga ped..

0 comments:

 
Template by yummylolly.com