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
Ö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'ınız üzerinde sistem genelinde sorun olup olmadığını denetlemeye yardımcı olabilir.
Bir uygulamadan bağlantılar başarısız oluyorsa, uygulamadan bağlantı dizesi 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.
Seçenek 1
Önerilen önkoşullar bölümünde belirtilen SQLCHECK aracının çıkışına erişiminiz varsa ve çıkış dosyasındaki çeşitli bölümlerde (Bilgisayar, İstemci Güvenliği ve SQL Server) bilgileri gözden geçiriyorsanız, sorununuza katkıda bulunan sorunları gidermek için 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 | Varsalar, takma adların düzgün yapılandırıldığından ve doğru sunucuya ve IP adreslerine işaret ettiğinden emin olun. | 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ış bir örneğe bağlanırken sorun yaşıyorsanız SQL Server Browser hizmetinin başlatıldığından emin olun 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 | SQL Server'ınızdan bağlı sunucuları 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ı |
Seçenek 2
SQL Server bilgisayarınızda SQLCHECK'i çalıştıramıyorsanız, ayrıntılı sorun giderme işlemi yapmadan önce aşağıdaki öğeleri denetleyebilirsiniz:
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'a bağlanıp bağlanamadığı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")Sql Server'a diğer istemci sistemlerinden ve farklı kullanıcı oturumlarından bağlanıp bağlanamadığınızı denetleyin. Yapabiliyorsanız, 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 tamamladığınızda yaygın bağlantı sorunlarına bakın ve ayrıntılı sorun giderme adımları için ilgili hata iletisini seçin.