1 Son düzenleyen, sasmazali (05.06.2010 14:15:12)

Konu: Sql Server'a bağlantıda timeout ayarı?

SQLSETPROP(0',ConnectTimeOut',5)

bu komut ile Sql Server'a bağlanmak için zorlanacağız süre tanımlanıyor defaultta çok uzun sürüyor bunu kısaltmak için bu komutu kullanıyorum fakat hiç faydasını göremedim. Bu komutun kullanımını bir anlatabilir misiniz? tek balına işe yaramıyor anlaşılan yanında açmam veya kapatmam gereken yerler anlaşılan fakat bulamadım.

İp yanlış girilmiş olsun veya o arada sunucu kapalı ise bu üsre yaklaşık 30 saniye kadar komutu kullansam bile sad
Şimdiden teşekkürler

2

Re: Sql Server'a bağlantıda timeout ayarı?

Derdimi anlamatım galiba belki komutta hatalı olabilir. Eğer connect yapılacağı sırada ip veya sunucuda bir problem var ise çok uzun süre bekliyor ve bağlantı kurulamıyor bu uzun beklemeyi düşürmek istiyorum bulamadım lütfen bilen varsa bir ipucu

3

Re: Sql Server'a bağlantıda timeout ayarı?

Derdin anlasiliyor da, neden derdin oldugunu anlayamadim. Aynen dedigin gibi calisiyor. Orada 5 yazdin diye illa 5 bekleme, 5-5.2 filan olabilir.

Visual Fox Pro
start = SECONDS()

SQLSETPROP(0,"ConnectTimeOut",1)
SQLSETPROP(0,"DispLogin",3)
SQLSTRINGCONNECT('Driver={SQL Native Client};server=205.205.57.4\SQLNone;Trusted_Connection=yes')
? SECONDS()-m.start

Ben bu kodla 1.0-1.1 hadi bilemedin 1.2 aliyorum.

4 Son düzenleyen, sasmazali (07.06.2010 13:00:52)

Re: Sql Server'a bağlantıda timeout ayarı?

ÇETİN Abi aşağıda ki kodda en az 30 saniye bekliyor 5 saniyeden fazla olmasın dediğim halde bu yüzden sıkıntım var. bir türlü 5 saniye içinde bağlantı kuramazsan vazgeçi yapmıyor sad

Visual Fox Pro
IF USED("tcpip")

    SELECT tcpip
    USE
ENDIF
 
SELECT * FROM "yed_tcpip" INTO CURSOR tcpip READWRITE
USE IN yed_tcpip
SELECT tcpip
DELETE ALL
APPEND FROM "tcpip.ini" TYPE SDF
 
 
******** BAĞLANTI AYARLARI ********
server_turu=""
sql_bag=0
databases_ad=""
databases_adi=""
ayar_sube_kodu=0
SELECT tcpip
GO TOP
LOCATE FOR AT("1#",tcpip.tcp_ip)>0
IF FOUND()
    server_turu=SUBSTR(ALLTRIM(tcpip.tcp_ip),AT("#",tcpip.tcp_ip)+1,25)
    IF EMPTY(server_turu)
        MESSAGEBOX("LÜTFEN TCPIP.INI DOSYASINI DÜZENLEYİNİZ",16,"UYARI")
                   QUIT
    ENDIF
ELSE
    MESSAGEBOX("LÜTFEN TCPIP.INI DOSYASINI DÜZENLEYİNİZ",16,"UYARI")
    QUIT
ENDIF
 
GO TOP
LOCATE FOR AT("2#",tcpip.tcp_ip)>0
IF FOUND()
    ayar_sube_kodu=VAL(SUBSTR(ALLTRIM(tcpip.tcp_ip),AT("#",tcpip.tcp_ip)+1,25))
    IF EMPTY(ayar_sube_kodu)
        MESSAGEBOX("LÜTFEN TCPIP.INI DOSYASINI DÜZENLEYİNİZ",16,"UYARI")
        QUIT
    ENDIF
ELSE
        MESSAGEBOX("LÜTFEN TCPIP.INI DOSYASINI DÜZENLEYİNİZ",16,"UYARI")
        QUIT
ENDIF
 
kullanici_adi="KULLANICI_ADI"
kullanici_sifre="ŞİFRE"
 
******************  TÜRKÇE **********************
SQLSETPROP(0, 'DispLogin', 3)
SQLSETPROP(0,'ConnectTimeOut',5)
 
PUBLIC strConString
strConString =""
 
strConString = ;
"DRIVER={SQL SERVER};SERVER=&server_turu;DATABASE=&databases_ad;UID=&kullanici_adi;PWD=&kullanici_sifre;"
*************************************************
 
sql_bag = SQLSTRINGCONNECT(strConString , .T.)

5

Re: Sql Server'a bağlantıda timeout ayarı?

kullandigin SQL Server versiyonu nedir -> DRIVER={SQL SERVER}  SQL 2000 icindir 2005 veya 2008 kullaniyorsan asagidaki  lerden birini kullanmalisin

Visual Fox Pro
DRIVER={SQL SERVER Native Client} && sql2005

DRIVER={SQL SERVER Native Client 10.0} && sql2008

ayrica .ini dosyadan birseyler okumak icin neden bu kadar kasiyorsun XML kullan

Visual Fox Pro
Local lcXML

lcXML = 'tcpip.xml'
 
TEXT TO m.lcXML NOSHOW TEXTMERGE
<?xml version = "1.0" encoding="Windows-1254" standalone="yes"?>
<VFPData>
    <pathinfo>
        <server_turu>Driver={SQL Server Native Client 10.0}</server_turu>
        <server_adi>.\SQLExpress</server_adi>
        <sqlbag></sqlbag>
        <databasesad></databasesad>
        <databasesadi>depomatik</databasesadi>
        <ayar_sube_kodu></ayar_sube_kodu>
        <kullanici_adi>kullanici_adi</kullanici_adi>
        <kullanici_sifre>kullanici_sifre</kullanici_sifre>
    </pathinfo>
</VFPData>
ENDTEXT
 
*STRTOFILE(m.lcXML,'d:\tcpip.xml'
 
Xmltocursor(m.lcXML,'tcpip')
Select tcpip
Browse
 
SQLSetprop(0, 'DispLogin', 3)
SQLSetprop(0,'ConnectTimeOut',5)
 
Public strConString
 
TEXT TO m.strConString NOSHOW TEXTMERGE
<<tcpip.server_turu>>;Server=<<tcpip.Server_adi>>;DataBase=<<tcpip.DataBasesadi>>;Trusted_Connection=yes;
ENDTEXT
 
* Uid=<<tcpip.kullanici_adi>>;Pwd=<<tcpip.kullanici_sifre>>
 
start = SECONDS()
sql_bag = Sqlstringconnect(m.strConString)
? SECONDS()-m.start && 0,060 bende
 
If SQLExec(sql_bag,'select * from cari','cari') > 0
    Select 'cari'
    Browse
Else
    messagebox(Aerror())
Endif

6

Re: Sql Server'a bağlantıda timeout ayarı?

XML PEK HAKİM DEĞİL AÇIKÇASI FAZLA KULLANMADIM ÖĞRENMEK İÇİN BİRAZ ZAMANIN UYGUN OLMASINI BEKLİYORUM. BENDEKİ 2005 DEDİĞİNİZ YÖNEMLE BİR BAĞLANMAYI TEST EDECEĞİM SONUCU BURAYA OLUMLU OLUMSUZ YAZARIM TEŞEKKÜRLER

7

Re: Sql Server'a bağlantıda timeout ayarı?

aynı problem devam ediyor bağlanmak istediği TCP IP yok ise 52 saniye kadar sürüyor diğer türlü kullanıcı adı ve şifresindeki problemlerde sorun yok

8

Re: Sql Server'a bağlantıda timeout ayarı?

bilemiyorum ama geriye firewall,antivirus  vs ler kaliyor ağ trafiğini denetleyen belki onların ilk etaptaki gelen connection taleplerini filtre etmesinden dolayi gecikme yasaniyordur.

tcp/ip yi bulmaya calisirken diyorsun tcp/ip nasil yok ise o kısmı anlamadim aramasini engellemek istiyorsan

Server_Adi = "192.168.1.250\SQLExpress" seklinde yaz

9

Re: Sql Server'a bağlantıda timeout ayarı?

şube merkeze bağlantı kurmak istiyor. Eğer o sırada Şubede internet yok ise bağlanmak istediği tcp-ip'ye ulaşamıyor bu sıradada bekleme süresi uzun oluyor. Sıkıntı burda internetin var olup olmadığını kontrol etmek gerekecek herhalde yoksa o tcp-ip nin olmadığını bulmak uzun sürüyor bulupta bağlanama süresinde problem yok

10

Re: Sql Server'a bağlantıda timeout ayarı?

bunu baştan söyleseydin smile ilk önce belirtmen gereken seyi en sonda belirttin...

Visual Fox Pro
Local lcURL

lcURL=[http://www.google.com/]
 
Declare Integer InternetCheckConnection In Wininet.Dll String Url, Long dwFlags, Long Reserved
If InternetCheckConnection(lcURL, 1, 0) != 0
    Messagebox("Internet Var")
Else
    Messagebox("Internet Yok")
Endif

11

Re: Sql Server'a bağlantıda timeout ayarı?

hakkatten özür aslında ipyi aradığı için geçikmesini bende sonradan farkettim. İnternet varmı yok mu? diye kontrolü koymak gerekecek fakat şöyle birşey var bilgisayar koblosuz bağlantı kuruyor ve program bilgisayar açılışta devreye giriyor ilk açılışta kablosuz bağlantı hemen devreye girmediğinde de internet yok mesajı geliyor dolayısıyla bunu kabullencez gibi birşey olacak

12

Re: Sql Server'a bağlantıda timeout ayarı?

Ali;

Bilgisayarların açılma süresi zaten bir kaç dakika. Eğer ki programını açılışa yerleştirdiysen; beklemekten başka seçeneğin yok!

Uğur
-------------------------------------------------------------------------------------------------------------
Hayat bir bisiklete binmek gibidir. Pedalı çevirmeye devam ettiğiniz sürece düşmezsiniz. Claude Peppeer
Kusuru söylenmeyen adam, ayıbını hüner sanır.  Türk Atasözü

13

Re: Sql Server'a bağlantıda timeout ayarı?

Bu internet kontrolünü koymam sorun yaşatır mı? bana yani o an diyelimki google girilmiyor dolayısıyla internet olsa bile yokmuş gibi hareket edecek çok büyük bir sıkıntı ile arşılaşırmıyım kullanmım açısından

14

Re: Sql Server'a bağlantıda timeout ayarı?

Yapman gereken zaten bu. Eğer datayı internet üzerinden okuyorsan; www.google.com yada www.hurriyet.com.tr gibi bir adresi kontrol ettirebilirsin.

Uğur
-------------------------------------------------------------------------------------------------------------
Hayat bir bisiklete binmek gibidir. Pedalı çevirmeye devam ettiğiniz sürece düşmezsiniz. Claude Peppeer
Kusuru söylenmeyen adam, ayıbını hüner sanır.  Türk Atasözü

15

Re: Sql Server'a bağlantıda timeout ayarı?

Herkese iyi akşamlar

Küçük bir parantes açmak istiyorum: Bir süre bende farklı yöntemlerle internet bağlantısını test etmek yollarına düşmüştüm. Sanırım denemediğim bir yöntem kalmamışdır.
Şu an yoğordumu üfliyerek yiyorum. Yani uslu uslu bir ping atıyorum, cevabını bir dosyaya yönlendiriyorum ve o dosyayı incelliyorum.

Visual Fox Pro
DECLARE INTEGER ShellExecute IN Shell32.DLL AS MyShellExecute ;

   LONG nhWnd, STRING cAction, STRING cFile, ;
   STRING cParam, STRING cDirectory, INTEGER nShow
 
cCMD = '/C ping -n 1 -w 2000 ' + cIP + ' > ' + cTemp  && 1 defa dene  ve max. 2 saniye bekle
 
MyShellExecute(0, NULL, "cmd.exe", cCmd, NULL, 0)
CLEAR DLLS MyShellExecute

Birde asla ve asla adres ile sorgulama. Yani "www.google.com" gibi.
Çünki bu durumda ilkönce DNS server sorgulanıyor, ve internet yoksa çok bekliyorsun. Hep IP adresi kullan. Örneğin Türk Telekom'un DNS server.
Aradaki farkı ethernet kablonu çıkartarak bir deniyebilirsin.

Ama dediğim gibi: ping benim açımdan en sağlıklı sorgulama yöntemi.

Bir projenin bitmesi için 3 seçenek vardır: hızlı, ucuz, iyi. Bu seçeneklerden iki tanesini seçiniz.

16

Re: Sql Server'a bağlantıda timeout ayarı?

Aradığım tam cevap buydu galiba interneti bir sayfa ile kontrol etmek biraz aklıma yatmamıştı ve testlerimdede sorunlar yaşadım bu ping işimi çok iyi çözecek hatta internet olupta sunucu kapalı ise gene uzun süre bekliyordum bu kontrol ile uzaktaki makineyede ping göndererek sorun daha net çözülüyor

17

Re: Sql Server'a bağlantıda timeout ayarı?

Eh! Bilen konuşunca, bilmeyen susmalıymış.

Mehmet abi, bu güzel ipucu için teşekkürler. smile

Uğur
-------------------------------------------------------------------------------------------------------------
Hayat bir bisiklete binmek gibidir. Pedalı çevirmeye devam ettiğiniz sürece düşmezsiniz. Claude Peppeer
Kusuru söylenmeyen adam, ayıbını hüner sanır.  Türk Atasözü

18

Re: Sql Server'a bağlantıda timeout ayarı?

Mehmet K yazdı:

Herkese iyi akşamlar

Küçük bir parantes açmak istiyorum: Bir süre bende farklı yöntemlerle internet bağlantısını test etmek yollarına düşmüştüm. Sanırım denemediğim bir yöntem kalmamışdır.
Şu an yoğordumu üfliyerek yiyorum. Yani uslu uslu bir ping atıyorum, cevabını bir dosyaya yönlendiriyorum ve o dosyayı incelliyorum.

Visual Fox Pro
DECLARE INTEGER ShellExecute IN Shell32.DLL AS MyShellExecute ;

   LONG nhWnd, STRING cAction, STRING cFile, ;
   STRING cParam, STRING cDirectory, INTEGER nShow
 
cCMD = '/C ping -n 1 -w 2000 ' + cIP + ' > ' + cTemp  && 1 defa dene  ve max. 2 saniye bekle
 
MyShellExecute(0, NULL, "cmd.exe", cCmd, NULL, 0)
CLEAR DLLS MyShellExecute

Birde asla ve asla adres ile sorgulama. Yani "www.google.com" gibi.
Çünki bu durumda ilkönce DNS server sorgulanıyor, ve internet yoksa çok bekliyorsun. Hep IP adresi kullan. Örneğin Türk Telekom'un DNS server.
Aradaki farkı ethernet kablonu çıkartarak bir deniyebilirsin.

Ama dediğim gibi: ping benim açımdan en sağlıklı sorgulama yöntemi.


Mehmet
sanırım ping konusunda tecrübem olmadığı için kodunu kullanamadım.
uygulamayı biraz açabilirmisin - yani Soykan'ın ki gibi somut - internet var veya yok gibi.
peşinen teşekkürler ...

VFP9 SP2

19

Re: Sql Server'a bağlantıda timeout ayarı?

İyi akşamlar

İnternet varmı/yokmu test etmek için şu yöntemi uyguluyorum:
Yukarda belirtiğim yöntem ile Türk Telekom'un DNS serverine (195.175.39.39) bir ping atıyorum ve cevabını bir dosyaya yönlendiriyorum.
Bir 5 basamaklı loop ile o dosyayı her 500ms kontrol ediyorum; içinde 'Kaybolan' veya 'Lost' kelimeler varmı diye.
2,5 saniye içinde o dosyanın içinde bu kelimeleri bulamadıysam, RETURN FALSE ile geri dönüyorum.
Bulursam, loop'dan çıkıyorum ve 'KAYBOLAN=0' veya 'LOST=0' ifadeleri kontrol ediyorum. Bulursam, RETURN TRUE, bulamasam RETURN FALSE ile geri dönüyorum.

IP yerine WEB-adres kullanırsan, -w parametre devreye girmez ve internet yoksa 10 saniye kadar bekletir.

Bir projenin bitmesi için 3 seçenek vardır: hızlı, ucuz, iyi. Bu seçeneklerden iki tanesini seçiniz.

20 Son düzenleyen, birol (13.06.2010 22:04:25)

Re: Sql Server'a bağlantıda timeout ayarı?

Teşekkürler.

Visual Fox Pro
cIP="195.175.39.39"

cTemp=forcepath("PING.RAP",sys(2023))
 
DECLARE INTEGER ShellExecute IN Shell32.DLL AS MyShellExecute LONG nhWnd,STRING cAction,STRING cFile,STRING cParam,STRING cDirectory,INTEGER nShow
cCMD='/C ping -n 1 -w 2000 '+cIP+' > '+cTemp  && 1 defa dene  ve max. 2 saniye bekle
MyShellExecute(0,NULL,"cmd.exe",cCmd,NULL,0)
CLEAR DLLS MyShellExecute
 
WAIT WINDOW "AZCIK BEKLE" TIMEOUT 1
MODIFY FILE (cTemp)

21

Re: Sql Server'a bağlantıda timeout ayarı?

Günaydın

Birol Bey,

Visual Fox Pro
WAIT WINDOW "AZCIK BEKLE" TIMEOUT 1

MODIFY FILE (cTemp)

yerine şunu kullanırsanız ....

Visual Fox Pro
nCnt = 0

DO WHILE nCnt < 5
  Sleep(500)
  DOEVENTS   &&  gereklimi?
  nCnt = nCnt +1
  IF FILE(cTemp)
    Sleep(500)    &&  500ms warten
    cCMD = FILETOSTR(cTemp)
    nPos = ATC('Lost', cCMD)    && non case-sensitive
    IF nPos > 0
      lResult = TRUE
      EXIT
    ENDIF
    nPos = ATC('Kaybolan', cCMD)    && non case-sensitive
    IF nPos > 0
      lResult = TRUE
      EXIT
    ENDIF
  ENDIF
ENDDO
 
IF FILE(cTemp)
  DELETE FILE (cTemp)
ENDIF
IF lResult == FALSE
  RETURN FALSE
ENDIF
cCMD = SUBSTR(cCMD, nPos, 20)
cCMD = STRTRAN(cCMD," ", "")  && entferne space
IF LEFT(UPPER(cCMD),6) == "LOST=0"
  RETURN TRUE
ENDIF
IF LEFT(UPPER(cCMD),10) == "KAYBOLAN=0"
  RETURN TRUE
ENDIF
RETURN FALSE
Bir projenin bitmesi için 3 seçenek vardır: hızlı, ucuz, iyi. Bu seçeneklerden iki tanesini seçiniz.

22

Re: Sql Server'a bağlantıda timeout ayarı?

Ben Function olarak kullanmayı tercih ettim. gerekli olan yerde ;
if internet_kontrolu()=.t.
    yapılmasını istediklerim
endif

1 kere test et dediğimizden "Kaybolan" yazan satırı bulup içerisinden "Giden" nin karşılığını buluyorum 1 ise var 1den farklı ise yok diyorum. Şuanda da kullanmaya başladım çok güzel oldu. 

Visual Fox Pro
Function internet_kontrolu

    IF DIRECTORY("c:\tmp")=.f.
        MKDIR "c:\tmp"
    ENDIF
 
    cTemp="c:\tmp\"+SYS(2015)+".pin"
    DECLARE INTEGER ShellExecute IN Shell32.DLL AS MyShellExecute ;
        LONG nhWnd, STRING cAction, STRING cFile, ;
        STRING cParam, STRING cDirectory, INTEGER nShow
 
    cCMD = '/C ping -n 1 -w 2000 ' + internet_adresi + ' > ' + cTemp  && 1 defa dene  ve max. 2 saniye bekle
    MyShellExecute(0, NULL, "
cmd.exe", cCmd, NULL, 0)
 
    LOCAL ping_sayac
    local ping_sonuc
    ping_sayac=0
    ping_sonuc="
"
 
    DO WHILE .T.
        ping_sayac=ping_sayac+1
        CREATE CURSOR ping_dogrulama(blg c(150))
        IF FILE((cTemp))
            SELECT ping_dogrulama
            APPEND FROM (cTemp) TYPE SDF
            GO TOP
            LOCATE FOR AT("
Kaybolan",ping_dogrulama.blg)>0
            IF FOUND()
                ping_sonuc= SUBSTR(ping_dogrulama.blg, AT("
Gelen",ping_dogrulama.blg)+5,4)
                ping_sonuc=alltrim(SUBSTR(ping_sonuc, AT("
=",ping_sonuc)+1,5))           
                EXIT
            ENDIF
            IF ping_sayac>10000
                EXIT
            ENDIF
        ENDIF
    ENDDO
 
    IF USED("
ping_dogrulama")
        USE IN "
ping_dogrulama"
    ENDIF
    CLEAR DLLS MyShellExecute
    IF ping_sonuc="
1"
        RETURN .T.
    ELSE
        RETURN .F.
    ENDIF
ENDFUNC

23

Re: Sql Server'a bağlantıda timeout ayarı?

Şöylede olabilir.


Visual Fox Pro
#define sckclosed                0

#define sckopen                    1
#define scklistening            2
#define sckconnectionpending    3
#define sckresolvinghost        4
#define sckhostresolved            5
#define sckconnecting            6
#define sckconnected            7
#define sckclosing                8
#define sckerror                9
 
 
CLEA
? pingstate(pingx("195.175.39.39"))
 
 
**************
func pingstate
    lparam tnstate
    local lcstate
    do case
        case tnstate=sckclosed
            lcstate="Closed"
        case tnstate=sckopen
            lcstate="Open"
        case tnstate=scklistening
            lcstate="Listening"
        case tnstate=sckconnectionpending
            lcstate="Waiting"
        case tnstate=sckresolvinghost
            lcstate="Resolving"
        case tnstate=sckconnecting
            lcstate="Connecting"
        case tnstate=sckconnected
            lcstate="Connected"
        case tnstate=sckclosing
            lcstate="Closing"
        case tnstate=sckerror
            lcstate="Error"
        otherwise
            lcstate="Unknown"
    endcase
    return lcstate
 
 
**********
func pingx
    lparam tcserver,tnport
    local lnstate,loping,lnlast
    loping=crea("mswinsock.winsock")
    with loping
        .remoteport=tnport
        .remotehost=tcserver
        .connect()
        lnlast=-1
        do while .state<sckconnected
            if lnlast#.state
                lnlast=.state
            endif
        enddo
        lnstate=.state
        .close()
    endwith
    return lnstate
endfunc