![]() |
|
|||||||
| MySQL Veritabanı SQL SQL MySQL Access MSSQL Oracle Veritabani Database |
![]() |
|
|
LinkBack | Seçenekler | Stil |
|
|||
|
MSSQL Server'da 70000 kayıttan oluşan yabancı sarki sözü arşivimden bitişik (satır satır olmayan) şarkı sözlerini aşağıdaki kodla silmek istedim. server timeout mesajı verdi. Kod da bir hata mı yaptım bilemiyorum yardımcı olabilecek arkadaşa teşekkürler....
<!--#INCLUDE FILE="baglan.asp"--> <% set xs=NC.Execute("Select * from yabanci where (id >1 and id < 70000) ") Do While Not xs.EOF id=xs("id") soz=xs ("sarki_sozu") soz1=soz soz=Replace (soz,chr(13),"<br/>") if soz=soz1 and id<>Empty then set xs = NC.Execute ("DELETE yabanci where id='"&id&"'") end if xs.Movenext Loop nc.close set nc=nothing %> Konu qwerty tarafından (2006-09-13 Saat 12:01 ) değiştirilmiştir.. Sebep: düzenleme |
|
|||
|
Teşekkür ediyorum. Haklısın ilk bölümde zaten değer var InStr kullanmak gerekirdi. Senin verdiğin koda göre çalıştırdım şöyle bir hata aldım.
Microsoft VBScript compilation error '800a041f' Unexpected 'Next' /delete900.asp, line 19 xs.Movenext:Next ------------^ |
|
||||
|
delete from yabanci where sarki_sozu not like '%<br/>%'
bu sql direk dene ama sana tavsiyem bunu gerçek database de yapma (kendi çalışma ortamında yap) kolay gelsin <br/> ifadesini <br> yada bir başka türlü yazabilirsin bu senin veri tabanında <br> lerin nasıl olduğuna bağlı
__________________
Hayat birgün biter; yapacak birşeyler hep kalır. |
|
|||
|
Son değişikliklerden sonra kod aşağıdaki gibi oldu. Test etmek için sadece 20 kayıt silmek istedim. Yine "Timeout" hatası verdi.
Hatanın oluştuğu satır : set xs = nc.Execute("delete from yabanci where sarki_sozu not like '%<br/>%' ") Kod <!--#INCLUDE FILE="baglan.asp"--> <% set xs=nc.Execute("Select * from yabanci where (id >69975 and id < 70000) ") For i = 1 to 20 set xs = nc.Execute("delete from yabanci where sarki_sozu not like '%<br/>%'") xs.Movenext Next Response.Write("Kayıtlar Silindi") xs.close:set xs=nothing nc.close:set nc=nothing %> Hata Mesajı Microsoft OLE DB Provider for ODBC Drivers error '80040e31' [Microsoft][ODBC SQL Server Driver]Timeout expired /delete901.asp, line 8 Konu qwerty tarafından (2006-09-14 Saat 09:23 ) değiştirilmiştir.. Sebep: ilave bilgi |
|
||||
|
<!--#INCLUDE FILE="baglan.asp"-->
<% baslangic = Request.QueryString("sayac") bitis = baslangic + 10 set xs = nc.Execute("delete from yabanci where sarki_sozu not like '%<br/>%' and id >"& baslangic &" and id <= "& bitis &"") %> <script language="javascript"> window.setTimeout("window.open('toplu_sil.asp?saya c=<%=bitis%>','toplusil','')", 1 * 20000); </script> _______________ yukarıdaki kodu aynen çalıştır bakalım 1 * 20000 <<< ikinci kez sayfanın ne kadar süre sonra çalışacağını belirler. bitis = baslangic + 10 <<< bir seferde kaç kayıt silineceğini belirler buradaki 10 değeri arttırılırsa bir seferde silinecek kayıt artar. haa bu arada buradaki toplu_sil.asp yukarıdaki kodu yazdığın sayfanın adıdır.
__________________
Hayat birgün biter; yapacak birşeyler hep kalır. Konu TRinsanRehberi tarafından (2006-09-15 Saat 06:10 ) değiştirilmiştir.. |
|
|||
|
Aynen yazdığın gibi çalıştırdım. Aşağıdaki hata mesajını aldım.
Microsoft OLE DB Provider for ODBC Drivers error '80040e31' [Microsoft][ODBC SQL Server Driver]Timeout expired /delete902.asp, line 4 4 nolu satır : set xs = nc.Execute("delete from yabanci where sarki_sozu not like '%<br/>%'") |
|
||||
|
Onun yerine şöyle bişey yapabilirsin.
Tabloda x diye bir alan aç türünü bit yap. Daha sonra x alanın hepsini 0 olarak update et. Sql sorgusunda set xs=NC.Execute("Select top 50 * from yabanci where x=0") Daha sonra döngü kur ve işlemi yap bu arada işlem yaptığın kaydın x alanını 1 yap. Bu sorguda 50 kayıt birden gelecektir. Ve 50 kayıtta işlem yaptıktan sonra durur. Sürekli işlem yapması için sayfanın başına bunu ekle <meta http-equiv="refresh" content="1;url=?"> Bunu ekleyince işlem her bittiğinde sayfa yenilecek ve işlem yapılmayan kayıtlar x alanına göre alınıp işlenecektir. Ben hep bu yöntemi kullanıyorum. Biraz uzun sürer ama timeout vermez. Verirsede top 50 yeni top 20 - 30 olarak kullanabilirsin
__________________
Evet? - Hayır? |
![]() |
| Seçenekler | |
| Stil | |
|
|
Benzer Konular
|
||||
| Konu | Konuyu Başlatan | Forum | Cevaplar | Son Mesaj |
| script nasıl yapılır | rosende | Güvenlik | 0 | 2006-02-13 22:46 |
| Pro sayac nasıl yapılır | nonamez | Forumda | 2 | 2006-01-02 05:37 |
| Katalog nasıl yapılır? | favorites | Webmaster Genel Konular | 3 | 2005-12-24 09:37 |
| forum nasıl yapılır | kuaforerol | Hazır Uygulamalar Forumlar Paket Programlar | 1 | 2004-12-22 06:41 |
| bu buton nasıl yapılır? | seti | PHP | 1 | 2003-08-31 17:32 |