Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir: SQL Server
Özgün KB numarası: 4009936
Summary
Bu makale, bağlantı sorunlarını gidermek SQL Server bağlantı sorunlarını gidermek için iki bölümden oluşan bir başlangıç noktası sağlar: tanılama verilerini toplamak için önerilen önkoşullar kümesi ve ayrıntılı analize başlamadan önce kullanabileceğiniz hızlı bir denetim listesi. Hata iletilerini, olay günlüklerini, bağlantı dizelerini ve SQL Server yapılandırma ayrıntılarını toplamak ve hizmetlerin, dinleyicilerin, protokollerin, izinlerin ve ağ yollarının iyi durumda olduğunu doğrulamak için bunu kullanın. Bu adımları tamamladıktan sonra, ayrıntılı sorun giderme adımları için senaryonuzla eşleşen hata iletisini seçmek için yaygın bağlantı sorunlarına devam edin.
Önerilen önkoşullar
Bağlantı sorunlarını etkili bir şekilde gidermek için aşağıdaki bilgileri toplayın:
Hata iletisinin metni ve hata kodları. Hatanın aralıklı (yalnızca bazen gerçekleşir) veya tutarlı (her zaman gerçekleşir) olup olmadığını denetleyin.
SQL Server ve istemci sistemlerinden uygulama ve sistem olay günlükleri. Bu günlükler, SQL Server sistem genelinde sorun olup olmadığını denetlemenize yardımcı olabilir.
Bağlantılar bir uygulamadan başarısız olursa, uygulamadan bağlantı dizelerini toplayın. Bu dizeler genellikle ASP.NET uygulamalar için Web.config dosyalarında bulunur.
Diğer hata iletileri ve özel durumlar için SQL Server hata günlüklerini toplayın ve gözden geçirin.
SQL Server bilgisayarına yönetici erişiminiz varsa, aşağıdaki yordamı kullanarak geçerli bilgisayar ayarlarını ve hizmet hesaplarını toplayın ve gözden geçirin:
İndirilen dosyayı bir klasöre çıkartın; örneğin, C:\Temp.
Verileri toplamak ve bir dosyaya kaydetmek için komut istemini yönetici olarak çalıştırın. Örneğin:
SQLCHECK > C:\Temp\server01.SQLCHECK.TXT.
Not
Uzak istemciden bağlantı sorunlarını gideriyorsanız veya bağlantılı sunucu sorgularında sorun yaşıyorsanız, sqlcheck aracını ilgili tüm sistemlerde çalıştırın.
Bağlantı sorunlarını gidermek için hızlı denetim listesi
Not
Aşağıdaki bölümler bağlantı sorunlarını hızla denetlemenize yardımcı olur. Ayrıntılı sorun giderme adımları için konuları tek tek gözden geçirin.
SQLCHECK aracı çıkışını gözden geçirin
Önerilen önkoşullar bölümünde belirtilen SQLCHECK aracının çıkışına erişiminiz varsa, çıkış dosyasının çeşitli bölümlerindeki bilgileri gözden geçirin (Bilgisayar, İstemci Güvenliği ve SQL Server). Sorununuza katkıda bulunan sorunları gidermek için bu bilgileri kullanın. Aşağıdaki örneklere bakın:
| Dosyadaki bölüm | Aranacak metin | Olası eylem | Sorun gidermeye yardımcı olabilir (örnekler) |
|---|---|---|---|
| Bilgisayar Bilgileri | Uyarı: Ağ sürücüsü güncel olmayabilir | Yeni sürücüler için çevrimiçi arama yapın. | Çeşitli bağlantı hataları |
| İstemci Güvenlik ve Sürücü Bilgileri | Diffie-Hellman şifre paketleri etkinleştirilir. Algoritma sürümü istemciler ve sunucular arasında farklıysa aralıklı TLS hatası riski | Aralıklı bağlantı sorunları yaşıyorsanız bkz. Windows'da SQL Server'lara bağlanırken uygulamalar zorla kapatılan TLS bağlantı hataları yaşıyor. | Var olan bir bağlantı, uzak ana bilgisayar tarafından zorla kapatıldı |
| İstemci Güvenlik ve Sürücü Bilgileri | SQL Takma Adlar | Varsa, diğer adların düzgün yapılandırıldığından emin olun ve doğru sunucu ve IP adreslerinin üzerine gelin. | SQL Server ile bağlantı kurulurken ağ ile ilgili veya örneğe özgü bir hata gerçekleşti |
| SQL Server Bilgileri | İlgi Çekici Hizmetler | SQL hizmetiniz başlatılmadıysa başlatın. Adlandırılmış örneğe bağlanırken sorun yaşıyorsanız tarayıcı hizmetinin başlatıldığından emin SQL Server veya tarayıcı hizmetini yeniden başlatmayı deneyin. | SQL Server ile bağlantı kurulurken ağ ile ilgili veya örneğe özgü bir hata gerçekleşti |
| SQL Server Bilgileri | Domain Hizmet Hesabı Özellikleri | bağlı sunucuları SQL Server yapılandırdıysanız ve Del için Güven değeri false olarak ayarlanırsa, bağlı sunucu sorgularınızla ilgili kimlik doğrulama sorunlarıyla karşılaşabilirsiniz. | "Kullanıcı için oturum açma başarısız oldu" hatalarını giderme |
| SQL Server Bilgileri | SPN yok | SQL Server'ınızın SPN'lerinin düzgün yapılandırılıp yapılandırılmamış olduğunu görmek ve tanımlanan sorunları düzeltmek için bu tabloyu denetleyin. | SSPI bağlamı oluşturulamıyor |
| SQL Server Bilgileri | SQL Server Örneği Ayrıntıları | TCP Etkin, TCP Bağlantı Noktaları vb. değerlerini denetleyin. SUNUCU tarafında TCP/IP'nin etkinleştirilip etkinleştirilmediğini ve SQL varsayılan örneğinizin 1433'te mi yoksa farklı bir bağlantı noktasında mı dinlediğini gözden geçirin. | Çeşitli bağlantı hataları |
SQLCHECK kullanılamadığında el ile denetim çalıştırma
SQLCHECK'i SQL Server bilgisayarınızda çalıştıramıyorsanız ayrıntılı sorun giderme işlemi yapmadan önce aşağıdaki öğeleri denetleyin:
SQL Server'ın başlatıldığından ve SQL Server hata günlüğünde aşağıdaki iletiyi gördüğünüzden emin olun:
SQL Server artık istemci bağlantıları için hazır. Bu bilgilendiren bir iletidir; kullanıcı eylemi gerekmez.
Sistemdeki SQL Server hizmetlerinin durumunu denetlemek için PowerShell'de aşağıdaki komutu kullanın:
Get-Service | Where {$_.status -eq 'running' -and $_.DisplayName -match "sql server*"}Aşağıdaki komutu kullanarak hata günlüğü dosyasında "SQL Server artık istemci bağlantıları için hazır." ifadesini arayın. Bu bilgilendirici bir iletidir; kullanıcı eylemi gerekmez.":
Get-ChildItem -Path "c:\program files\microsoft sql server\mssql*" -Recurse -Include Errorlog |select-string "SQL Server is now ready for client connections."IP adresi üzerinden temel bağlantıyı doğrulayın ve anormallikleri denetleyin:
ping -a <SQL Server machine>, ping -a <SQL Server IP address>. Herhangi bir sorun fark ederseniz ağ yöneticinizle birlikte çalışın. Alternatif olarak, PowerShell'de kullanabilirsinizTest-NetConnection:$servername = "DestinationServer" Test-NetConnection -ComputerName $servernameHata günlüğünü gözden geçirerek SQL Server'ın uygun protokollerde dinleyip dinlemediğini denetleyin:
Get-ChildItem -Path "c:\program files\microsoft sql server\mssql*" -Recurse -Include Errorlog |select-string "Server is listening on" , "ready to accept connection on" -AllMatchesUDL dosyası kullanarak SQL Server bağlanıp bağlanamayacağınızı denetleyin. Çalışıyorsa, bağlantı dizesi ile ilgili bir sorun olabilir. UDL test yordamıyla ilgili yönergeler için bkz . UDL dosyası kullanarak SQL Server'a OLE DB bağlantısını test etme. Alternatif olarak, aşağıdaki betiği kullanarak bir UDL-Test.udl dosyası oluşturabilir ve başlatabilirsiniz (%TEMP% klasöründe depolanır):
clear $ServerName = "(local)" $UDL_String = "[oledb]`r`n; Everything after this line is an OLE DB initstring`r`nProvider=MSOLEDBSQL.1;Integrated Security=SSPI;Persist Security Info=False;User ID=`"`";Initial Catalog=`"`";Data Source=" + $ServerName + ";Initial File Name=`"`";Server SPN=`"`";Authentication=`"`";Access Token=`"`"" Set-Content -Path ($env:temp + "\UDL-Test.udl") -Value $UDL_String -Encoding Unicode #open the UDL Invoke-Expression ($env:temp + "\UDL-Test.udl")Diğer istemci sistemlerinden ve farklı kullanıcı oturumlarından SQL Server bağlanıp bağlanamayacağınızı denetleyin. Bunu yapabilirseniz, sorun sorunla karşılaşan istemciye veya oturum açma bilgilerine özgü olabilir. Daha fazla işaretçi için sorunlu istemcideki Windows olay günlüklerini denetleyin. Ayrıca, ağ sürücülerinin güncel olup olmadığını denetleyin.
Oturum açma hataları yaşıyorsanız, bir oturum açma (sunucu ilkesi) olduğundan ve SQL Server üzerinde
CONNECT SQLizinlerine sahip olduğundan emin olun. Ayrıca, oturum açma bilgilerine atanan varsayılan veritabanının doğru olduğundan ve eşlenen veritabanı sorumlusunun veritabanı izinleri olduğundanCONNECTemin olun. Veritabanı sorumlusuna izin vermeCONNECThakkında daha fazla bilgi için bkz . GRANT Database Permissions. Sunucu sorumlusunaCONNECT SQLizin vermek için daha fazla bilgi için bkz. GRANT Server Permissions. Bu izinleri belirlemenize yardımcı olması için aşağıdaki betiği kullanın:clear ## replace these variables with the login, user, database and server $server_principal = "CONTOSO\JaneK" $database_principal = "JaneK" $database_name = "mydb" $server_name = "myserver" Write-Host "`n******* Server Principal (login) permissions *******`n`n" sqlcmd -E -S $server_name -Q ("set nocount on; SELECT convert(varchar(32),pr.type_desc) as login_type, convert(varchar(32), pr.name) as login_name, is_disabled, convert(varchar(32), isnull (pe.state_desc, 'No permission statements')) AS state_desc, convert(varchar(32), isnull (pe.permission_name, 'No permission statements')) AS permission_name, convert(varchar(32), default_database_name) as default_db_name FROM sys.server_principals AS pr LEFT OUTER JOIN sys.server_permissions AS pe ON pr.principal_id = pe.grantee_principal_id WHERE is_fixed_role = 0 -- Remove for SQL Server 2008 and name = '" + $server_principal + "'") Write-Host "`n******* Database Principal (user) permissions *******`n`n" sqlcmd -E -S $server_name -d $database_name -Q ("set nocount on; SELECT convert(varchar(32),pr.type_desc) as user_type, convert(varchar(32),pr.name) as user_name, convert(varchar(32), isnull (pe.state_desc, 'No permission statements')) AS state_desc, convert(varchar(32), isnull (pe.permission_name, 'No permission statements')) AS permission_name FROM sys.database_principals AS pr LEFT OUTER JOIN sys.database_permissions AS pe ON pr.principal_id = pe.grantee_principal_id WHERE pr.is_fixed_role = 0 and name = '" + $database_principal + "'") Write-Host "`n******* Server to Database Principal mapping ********`n" sqlcmd -E -S $server_name -d $database_name -Q ("exec sp_helplogins '" + $server_principal + "'")Kerberos ile ilgili sorunları gideriyorsanız, Kimlik doğrulama türünün Kerberos olup olmadığını belirleme sayfasındaki betikleri kullanabilirsiniz.
Yaygın bağlantı sorunları
Önkoşulları ve denetim listesini gözden geçirdikten sonra yaygın bağlantı sorunlarına bakın ve ayrıntılı sorun giderme adımları için senaryonuzla eşleşen hata iletisini seçin.