SQL serverda sorguların askıya (suspended) alınması
#1
Merhaba,
Sql server üzerinden access ile eriştiğim birsürü tablo var. Tablolar arasında ilişki access tarafında kuruluyor ve bazı tablolar çok büyük. Kullanıcılardan bazıları yoğun olduğu zamanlarda sistemi kullanırken bazen sql tarafında activity monitor tarafında incelediğimde bazı sorguların durumu suspended olarak kalıyor ve bilgi olarak async_network_io görünüyor. Suspend query sayısı arttığında sistem duruyor ve kimse çalışma yapamıyor. Bağlı access çalışmalarının hepsi kapatıldığı zaman, activity monitor üzerinde yer alan bu suspended işlemleri kayboluyor ve sistem normale dönüyor.

Bu durumdan nasıl kurtulabilirim. odbc timeout süresi mi uzatılmalı yoksa sql tarafında bir ayar mı yapılmalı çözemedim. Öneriniz nedir?

Accessler : 2010
Sql : 2008R2 Enterprice

Yardımcı olan herkese şimdiden teşekkürler



  Alıntı
Bu mesajı beğenenler:
#2
Merhaba, aynı sorun bende de var. Sorunu araştırıyorum ama henüz çözüm bulamadım. Çözüm bulan arkadaşların paylaşmasını rica ederim.
access 2003 ; sql 2005.



  Alıntı
Bu mesajı beğenenler:
#3
Merhaba,
Kendi bulduğum pratik bir çözüm,

Sql serverda bir veri alanını güncelledikten sonra görebilmek için access te hemen arkasına requery kullanıyoruz. Bu durumda güncellenen data büyükse yada bilgisayarın network performansı düşükse update sorgusunun arkasına giden select komutu işlem tamamlanmadığından suspended oluyor. Bu durumu aşmak için kendi sistemime Taruz Bey in hazırladığı aşağıdaki kod grubunu uyguladım. Böylece iki sorgu arasına zaman farkı ekleyerek bu durumdan büyük ölçüde kurtarmış oldum. Umarım benzer skıntıyı yaşayan diğer kişiler içinde çözüm olur.

Bu bölümü formunuzun vba alanında biryere yapıştırın.
Visual Basic
  1. Public Function Bekle(Sure As Single)
  2. Dim Basla As Single
  3. On Error GoTo trz
  4. Basla = Timer
  5. Do
  6. DoEvents
  7. Loop Until Basla + Sure < Timer
  8. Trz_Exit:
  9. Exit Function
  10. trz:
  11. MsgBox Err.Description
  12. Resume trz
  13. End Function



Alttaki kısmı ise saniye değerini belirterek uygulayın, sunucunuzun performansına göre 300000 satır için ortalama 2 yeterlidir. Kodu geciktirmeli kullanacağınız objenin önüne eklemeniz yeterli.

Visual Basic
  1. Bekle 2 ' saniye olrak değer veriniz..
  2. Me.objeniz.requery



Kolay gelsin.



  Alıntı
Bu mesajı beğenenler:


Benzer Konular...
Konu: Yazar Cevaplar: Gösterim: Son Mesaj
  Sql serverda hazırlanmış bir program - Yanlış yere açtıysam konuyu affedin. Respect 12 5.188 02-05-2012, 14:35
Son Mesaj: bybarone
  alt toplamların alınması ismailayan 0 1.236 08-10-2011, 13:13
Son Mesaj: ismailayan
access-sql-18 Visual Studio Ultimate içerisnde sql serverda kuruluyormu? tsotsi 2 2.487 12-12-2010, 18:23
Son Mesaj: tsotsi

Foruma Git:


Bu konuyu görüntüleyen kullanıcı(lar): 1 Ziyaretçi