Aracılığıyla paylaş


Tutarlı SQL Server ağ bağlantısı sorunları

Not

Sorun gidermeye başlamadan önce önkoşulları denetlemenizi ve denetim listesini gözden geçirmenizi öneririz.

Bu makale, SQL Server'daki ağ bağlantısı hatalarını gidermeye yardımcı olur. Bu hatalar tutarlıdır ve her seferinde yinelenebilir. SQL Server'ın TCP'yi etkinleştirmemesi veya bağlantıyı engelleyen bir güvenlik duvarı gibi bazı yapılandırma sorunlarına işaret ederler. Sorun giderme, çoğu veri merkezinde en yaygın bağlantı türü olduğundan uzak TCP bağlantılarına odaklanır, ancak tekniklerin çoğu Adlandırılmış Kanallar'a da uygulanabilir.

Tipik hata iletileri

En yaygın hata iletileri şunlardır:

  • İletişim bağlantısı hatası.

  • Genel ağ hatası.

  • Belirtilen ağ adına ulaşılamıyor.

  • SQL Server yok veya erişim reddedildi. (Bu bir kimlik doğrulama hatası da olabilir)

  • SQL Server ile bağlantı kurulmaya çalışılırken ağ ile ilişkili veya örneğe özgü bir hata oluştu. Sunucu bulunamadı veya erişilebilir değildi. Örnek adının doğru olduğundan ve SQL Server'ın uzak bağlantılara izin verecek şekilde yapılandırıldığından emin olun.

  • Belirtilen sunucu/örnek bulunurken hata oluştu.

  • SQL Server Microsoft SQL Server bağlantısı açılamadı, Hata:53. Ağ yolu bulunamadı.

  • Hedef makine etkin bir şekilde reddettiğinden bağlantı yapılamadı.

Sorunun kapsamını odaklanmış bir alana daraltma

Aşağıdaki adımlar, sorun gidermeyi odaklanmış bir alana daraltmaya yardımcı olur:

  • İstemci: uygulama, bağlantı dizesi, sürücü (Aktarım Katmanı Güvenliği (TLS) 1.2 eksik), SQL diğer adı (64/32 bit), konak dosyası ve yanlış Etki Alanı Adı Sistemi (DNS) soneki (tam ad bağlantıları; kısa ad başarısız oluyor).
  • SQL Server: veritabanı altyapısı, etkin protokoller ve güvenlik duvarı.
  • Ağ: DNS diğer adı, ağ geçidi, yönlendirici ve güvenlik duvarı.

1. SQL Server Management Studio (SSMS) ve TCP kullanarak SQL Server'a yerel olarak bağlanabilir misiniz?

Örneğin, bağlantı dizesi şu biçimde kullanın: tcp:<ServerName>.<DomainName>.COM,1433gibitcp:sqlprod01.contoso.com,1433.

Not

tcp sunucu adının küçük harfle yazılması gerekmeden önce eklenir.

Evet ise, SQL Server iyi çalışır. Sorun güvenlik duvarınız, ağınız veya istemcinizle ilgilidir.

Aksi takdirde, sorun SQL Server Hizmeti ile ilgilidir.

2. telnet kullanarak istemci makinesinden SQL Server bağlantı noktasına bağlanabilir misiniz?

Örneğin, SQL Server örneğine bir telnet bağlantısı kurma komutu şeklindedir telnet <ServerName>.<DomainName>.COM 1433.

Evet ise, sorun sürücüler/sağlayıcılar, güvenlik/Güvenli Yuva Katmanı (SSL), SQL diğer adları veya uygulamalarla ilgilidir.

Aksi takdirde, 1. adım çalıştığında sorun konak dosyanızla, ağınızla veya güvenlik duvarınızla ilgilidir.

  • Komut olarak kullanılamıyorsa telnet , bunu bir Windows özelliği olarak ekleyin. Bunun için yeniden başlatma gerekmez.

  • Windows'un daha yeni sürümlerinde Test-NetConnection PowerShell komutu bulunur.

    Örneğin, komutunu kullanarak bir SQL Server örneğine ağ bağlantısını test edin Test-NetConnection <ServerName>.<DomainName>.com -Port 1433 .

3. Adım 2 çalışıyorsa UDL dosyası kullanarak sunucuya bağlanabilir misiniz?

Evet ise, sorun yanlış bir bağlantı dizesi gibi uygulamalarla veya Evrensel Veri Bağlantısı (UDL) dosyasında kullanılan sağlayıcıdan farklıysa uygulama tarafından kullanılan sağlayıcıyla ilgilidir.

Aksi takdirde, sorun istemciler ile ilgilidir.

4. Diğer istemciler SQL Server'a bağlanabilir mi?

Evet ise, sorun güvenlik duvarınız, ağınız, TLS 1.2 veya istemcinizle ilgilidir.

Aksi takdirde, sorun güvenlik duvarınızla veya sunucunuzla ilgilidir.

5. İstemci diğer sunuculara bağlanabilir mi?

Evet ise, sorun güvenlik duvarınız, ağınız, TLS 1.2 veya sunucunuzla ilgilidir.

Aksi takdirde, güvenlik duvarınız, ağınız veya TLS 1.2 ile ilgili sorun.

SQL Server Hizmeti

Sorun SQL Server Hizmeti ile ilgiliyse şu adımları izleyin:

  1. Görev Yöneticisi'nde hizmet işleminin (sqlserver.exe) çalıştığını doğrulayın. (Birden çok örneğinin yüklü olup olmadığını SQL Server Yapılandırma Yöneticisi veya services.msc aracılığıyla da kontrol edebilirsiniz.)

    Çalışmıyorsa örneği başlatmayı deneyin. Yansıtılmış veya kümelenmiş bir yapılandırmaysa birincil veya etkin düğümde olduğunuzdan emin olun. Kaynakların çevrimiçi olduğundan emin olmak için yük devretme için küme yöneticisini veya her zaman kümelerde kullanın.

  2. Uygulama olay günlüğünün, küme günlüklerinin veya SQL Server ERRORLOG dosyasının eyleme dönüştürülebilir önemli bir hata gösterdiğini doğrulayın.

  3. beklenen protokollerin SQL Server Yapılandırma Yöneticisi ve SQL Server ERRORLOG dosyasında etkinleştirildiğini doğrulayın (aşağıdaki örneğe bakın).

    Aksi takdirde, bunları etkinleştirin ve SQL Server'ı yeniden başlatın. Uzak bağlantılara izin veriliyorsa TCP her zaman etkinleştirilmelidir.

    2013-11-20 09:42:03.90 Server Server is listening on [ 'any' <ipv6> 1433].
    2013-11-20 09:42:03.90 Server Server is listening on [ 'any' <ipv4> 1433].
    2013-11-20 09:42:03.94 Server Server local connection provider is ready to accept connection on [ \\.\pipe\SQLLocal\KJ].
    2013-11-20 09:42:03.94 Server Server named pipe provider is ready to accept connection on [ \\.\pipe\MSSQL$KJ\sql\query].
    
  4. SSMS, UDL veya ODBC Veri Kaynağı Yöneticisi bağlantısında, sunucu adını şu biçimde belirterek SQL Server Tarayıcısını atlar: tcp:<ServerName>.<DomainName>.com,1433.

    Not

    Bağlantı oluşturmak için tam etki alanı adını (FQDN) tcp:ve bağlantı noktası numarasını kullanmak en güvenilir ve dayanıklı yöntemdir. tcp: küçük harf olmalıdır.

    • Bağlantı başarılı olursa:

      • SQL Server Browser'ın çalıştığını doğrulayın. SQL Server, bağlantı noktası 1433'te dinleyen varsayılan bir örnekse çalışıyor olması gerekmez. Bağlantı noktası numarasını kaldırıp çalışmaya devam edebilirsiniz.
      • Ön eki kaldırma tcp: işlemi başarısız olmasına neden oluyorsa, varsayılan olarak Adlandırılmış Kanallar aracılığıyla bağlanıyor olabilirsiniz. Sunucu adı olarak kullanarak np:hostname\<ServerName> doğrulayabilirsiniz.
      • NetBIOS adını kullanmak başarısız olursa, ağ yapılandırmasında NetBIOS adını geçersiz kılan bir SQL diğer adınız veya yanlış bir DNS sonekiniz olabilir. Ayrıca, 32 bit diğer adları denetleyin.
    • SSMS bağlanamıyorsa, bir UDL dosyasıyla veya ODBC Veri Kaynağı Yöneticisi aracılığıyla bağlanmayı deneyin.

      • Ana bilgisayar adı yerine sunucunun IP adresini kullanmayı deneyin. Sunucu kümelenmemişse ve "any" üzerinde dinliyorsa 127.0.0.1'i kullanmayı bile deneyebilirsiniz.
      • Farklı sürücüleri deneyin. Daha yeni sürücüler TLS 1.2'i destekler ve daha iyi hata iletileri verir.
      • Farklı protokolleri deneyin: tcp:<ServerName>.<DomainName>.com,1433, np:<ServerName>.<DomainName>.com\<InstanceName>veya lpc:<ServerName>.<DomainName>.com\<InstanceName>. Değişiklik yapmak için SQL Server Yapılandırma Yöneticisi kullanın. Ardından SQL Server'ı yeniden başlatın ve ERORLOG dosyasını kullanarak değişiklikleri onaylayın.
      • SQL Server (2014 veya öncesi) TLS 1.2'yi destekleyecek şekilde yükseltildi mi? İstemci TLS 1.2'yi destekleyecek şekilde yükseltildi mi? Bu protokoller etkinleştirildi mi?
      • tüm Windows makinelerinde SQL Server Yapılandırma Yöneticisi veya cliconfg.exe sql diğer adını denetleyin. 64 bit ve 32 bit diğer adlarını denetleyin.
      • Veritabanı kullanılamıyor veya kurtarma aşamasında olduğu gibi hata iletileri için ERRORLOG dosyasını denetleyin.
      • Sql Server'ın NETSTAT beklenen bağlantı noktasına sahip olup olmadığını doğrulamak için çıkışı denetleyin. Örneğin, yönetici izinlerine sahip bir komut isteminden komutunu çalıştırın NETSTAT -abon > c:\temp\ports.txt .
    • SQL Server 1433 dışında bir bağlantı noktası kullanıyorsa:

      • Bağlantı noktası numarasını belirterek bağlanabiliyorsanız ancak bağlantı noktası numarasını atladığınızda bağlanamıyorsanız, bu bir SQL Server Tarayıcısı sorunudur. Bu, SQL Browser hizmetinin bağlanmak istediğiniz SQL Server örneği için doğru bağlantı noktası numarasını sağlayamadığı anlamına gelir. Bilgilerini yenilemek için SQL Browser hizmetini yeniden başlatmanız da gerekebilir.

      • Bağlantı noktası numarasını belirttiğinizde bile bağlanamıyorsanız ve bu yalnızca uzaktan bağlandığınızda oluyorsa, bu bir güvenlik duvarı sorunudur. Güvenlik duvarı ayarlarını denetlemeli ve gelen ve giden bağlantılar için bağlantı noktasına izin verildiğinden emin olmalısınız. SQL Server uygulamasının veya hizmetinin güvenlik duvarı üzerinden iletişim kurmasına izin vermek için bir güvenlik duvarı kuralı da oluşturmanız gerekebilir.

      • Always On kullanılıyorsa dinleyiciye bağlanmak SQL Server Browser kullanmaz, bu nedenle bağlantı dizesi bağlantı noktası numarasını belirtmeniz gerekir. Bu işe yaramazsa, normal SQL bağlantı noktasındaki birincil düğüme doğrudan bağlanmayı deneyin. Bu işe yararsa, sorun dinleyiciyle ilgilidir.

Yukarıdaki yöntemlerden hiçbiri işe yaramazsa SQL Server bilgisayarını yeniden başlatın.

En kötü durum senaryosu SQL Server Hizmetini durdurmak, yeni bir örnek yüklemek veya makineyi yeniden derlemek ve sonra veritabanını yeniden eklemek veya yedekten geri yüklemektir. SSISDB veritabanı gibi saydam veri şifrelemesi (TDE) kullanıyorsanız, bu adımı gerçekleştirmeden önce şifreleme anahtarlarının kaydedildiğinden emin olun. Yeniden oluşturma bazen temel neden analizinden daha hızlı olabileceği için bir seçenek olarak sunulur. Kümelenmiş yüklemelerde, bir düğümü alternatif düğümde çalışırken yeniden oluşturabildiğiniz için etki daha az olabilir.

Güvenlik Duvarı

Genel olarak, güvenlik duvarının varsayılan davranışı SQL Server ve SQL Server Browser bağlantı noktalarını engellemektir. Bu durumda, yerel bağlantılar başarılı olurken uzak bağlantılar başarısız olur. kullanarak Test-NetConnectiontest edin. Windows'un desteklenen tüm sürümlerinde kullanılabilir.

Test-NetConnection <ServerName> -Port 1433   
Test-NetConnection <ServerName>.<DomainName>.com -Port 1433

ERRORLOG dosyasında SQL Server'ın hangi bağlantı noktasını dinlediğini kontrol edin. Windows özelliği olarak ekleyerek etkinleştirmeniz telnet gerekebilir. Bunun için yeniden başlatma gerekmez. SQL Server'ın TCP'de de dinliyor olması gerekir. PortQry microsoft indirme sitesinden indirilebilir. SQL Server Browser kullanıyorsanız, UDP bağlantı noktası 1434'in güvenlik duvarında ve SQL Server TCP bağlantı noktasında açıldığından emin olun.

İstemci veya uygulama sunucusu farklı bir makinede SQL Server'a bağlanabilir. Belirli bir ağdaki veya alt ağdaki birden çok istemci, alt ağın dışındaki veya belirli bir alt ağın dışındaki bir sunucuya bağlanırken sorun yaşıyor olabilir. Ağ güvenlik duvarı belirli bir istemcinin belirli bir SQL Server'a bağlanmasını engelleyebilir. Örneğin, istemci diğer SQL Sunucularına bağlanabilir ve diğer istemciler sorun SQL Server'a bağlanabilir.

VPN

Sorun yalnızca bir sanal özel ağda (VPN) gerçekleşiyorsa ve dizüstü bilgisayar şirket içinde getirildiğinde değilse, VPN satıcısının sorunu çözmesi gerekir. VPN'nin neden olduğu sorunların türünü göstermeye yardımcı olabilecek bir istemci ve sunucu ağ izlemesi alabilirsiniz. Örneğin, bırakılan paketler en olası paketlerdir. VPN ayrıca istemci ve sunucu arasındaki iç yönlendirmeyi değiştirerek bağlantıyı engelleyen başka bir ağ cihazına da gösterebilir. Ara cihazlarda ağ izlemelerinin toplanması, ağı alt bölümlere ayırarak sorunun yalıtılmasında yardımcı olur. tracert komutu yönlendirmeyi gösterebilir.

İstemci

Sorun istemciler ile ilgiliyse aşağıdaki göstergeleri görebilirsiniz:

  • Diğer istemciler sunucuya normal şekilde bağlanabilir.

  • Bu makineden hiçbir uygulama bağlanamıyor.

  • UDL veya ODBC Veri Kaynağı Yöneticisi kullanarak bağlanamazsınız.

    Bunun nedeni giden güvenlik duvarı kuralı veya yanlış varsayılan DNS sonekleri olabilir. Tam sunucu adıyla test etmeyi deneyin, örneğin:

    Test-NetConnection <ServerName> -Port 1433   
    Test-NetConnection <ServerName>.<DomainName>.com -Port 1433
    

    Bu bir TLS sorunu olabilir. Örneğin, sunucu TLS 1.2 kullanır ve istemci sürücüleri bunun için yükseltilmemiştir.

    Bir konaklar dosya girişi, SQL diğer adı veya bağlantıyı başka bir sunucuya yönlendiren bir DNS diğer adı olabilir. ping ve telnetkullanın. Bunlar çalışır, ancak sürücü başarısız olursa, bir SQL diğer adı veya TLS sorunundan şüphelenin.

Sürücü

Sorun sürücülerle ilgiliyse farklı sürücüleri deneyin.

  • Bazı sürücüler çalışır ve bazıları başarısız olursa TLS sorunundan şüphelenin. SQL Server için Microsoft OLE DB Sürücüsü veya SQL Server için ODBC Sürücüsü 17 gibi en son sürücüyü indirin ve bunu deneyin.

  • .NET kullanıyorsanız çerçevenin en son sürümünü kullandığınızdan emin olun. Yine de başarısız olursa, daha iyi bir hata iletisi vermelidir. Ayrıca SQL Server'ın bağımsız en son SQL Server Management Studio sürümünü indirebilir ve herhangi bir istemciye yükleyebilirsiniz. Bu, sınıfını SqlClient .NET kullanır.

User

Sorun kullanıcılarla ilgiliyse, bu makinede başka bir kullanıcının oturum açmasını sağlayın.

  • Bağlantı başarılı olursa, başarısız kullanıcıyla ilgili farklı olan şeylere bakın. Örneğin, Windows kullanıcı profili bozuk veya kullanıcılar farklı bir kuruluş birimine (OU) veya etki alanına ait olabilir.

  • Birden çok etki alanından kullanıcılar varsa, sunucuyla aynı etki alanından bir kullanıcı kullanmayı deneyin. Genellikle, kullanıcı sorunları kimlik doğrulama hatalarıyla sonuçlanır ve farklı bir sorun giderme iş akışına sahip olur.

  • Bu bir kimlik doğrulama sorunu değilse, İşlem İzleyicisi günlüğü bağlantıyı etkileyen yerel izin sorunlarını belirlemeye yardımcı olabilir. Örneğin, kullanıcının bir veri kaynağı adı (DSN) veya farklı bir sürücüye bir tür kayıt defteri yeniden yönlendirmesi, yerel izin kısıtlaması veya bağlantı hatasını açıklayacak bir şey vardır.

Uygulama

Yalnızca belirli bir uygulama başarısız olursa ve bir UDL dosyası başarılı olursa, bu bir sürücü sorunu olabilir veya uygulamanın yanlış bağlantı dizesi. Uygulama geliştirme ekibinin veya üçüncü taraf satıcının bağlantı dizesi denetlemesini sağlayın. Müşteri emin değilse hangi sürücünün kullanıldığını görmek için İşlem Gezgini'ni www.sysinternals.com kullanabilirsiniz.

Yakalamak için izleme araçları

bir istemci ve sunucu ağ izlemesi yakalayın. SQL izlemesini hem istemcide hem de sunucuda aynı anda çalıştırın.

İstemci ve sunucu aynı makinede olduğunda izlemek için WireShark'ı NCAP sürücüsüyle yükleyin.

Kuruluşunuzun etkileşim kurabileceğiniz kendi ağ altyapısı ekibi olabilir ve yakalamayı gerçekleştirmek için tercih edilen bir izleme aracı olabilir. Ağ İzleyicisi (NetMon.exe) veya WireShark ile uyumlu bir biçimde kaydedildiği sürece herhangi bir aracı kullanabilirler. PCAP biçimi en popüler biçimdir.

Kolay okunan bir rapor almak için ağ izlemesinde SQL Ağ Çözümleyicisi (SQLNA) ve SQL Ağ Çözümleyicisi kullanıcı arabirimini (SQLNAUI) çalıştırın.

Daha Fazla Bilgi

Üçüncü taraf bilgileri hakkında yasal uyarı

Bu makalede adı geçen üçüncü taraf ürünleri Microsoft'tan bağımsız şirketler tarafından üretilmektedir. Microsoft, bu ürünlerin performansı veya güvenilirliği ile ilgili örtük veya başka türlü hiçbir garanti vermez.