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
Not
Sorun gidermeye başlamadan önce önkoşulları denetleyin ve denetim listesini inceleyin.
Zaman aşımı hatası, belirli bir işlemin gerekenden daha uzun sürdüğü anlamına gelir. İstemci uygulaması işlemi durdurur (süresiz beklemek yerine), diğer işlemleri engelleyebilir ve bir uygulamayı askıya alabilir. Bu makalede, SQL Server'a bağlanırken aldığınız "komut zaman aşımı" ve "bağlantı zaman aşımı" hataları için çözümler sağlanır.
Zaman aşımı süresi dolan hataları doğrulama
"Zaman aşımı süresi doldu" sorunlarıyla karşılaştığınızda, aşağıdaki hata iletilerinden birini veya daha fazlasını alırsınız:
-
Zaman aşımı süresi doldu. İşlem tamamlanmadan zaman aşımı süresi doldu veya sunucu yanıt vermiyor.
-
System.Data.SqlClient.SqlException (0x80131904): Bağlantı Zaman Aşımı Süresi Doldu. Oturum açma öncesi el sıkışma onayını işlemeye çalışırken zaman aşımı süresi geçti. Bunun nedeni oturum açma öncesi el sıkışmanın başarısız olması veya sunucunun zamanında yanıt verememesi olabilir. Bu sunucuya bağlanmaya çalışılırken harcanan süre: [Oturum Açma Öncesi] başlatma=23; el sıkışma=14979;
System.ComponentModel.Win32Exception (0x80004005): Bekleme işlemi zaman aşımına uğradı. -
System.Data.SqlClient.SqlException (0x80131904): Zaman aşımı süresi doldu. İşlem tamamlanmadan zaman aşımı süresi doldu veya sunucu yanıt vermiyor. System.ComponentModel.Win32Exception (0x80004005): Bekleme işlemi zaman aşımına uğradı.
-
Bağlantı Zaman Aşımı Süresi Doldu. Oturum açma öncesi el sıkışma onayını işlemeye çalışırken zaman aşımı süresi geçti. Bunun nedeni oturum açma öncesi el sıkışmanın başarısız olması veya sunucunun zamanında yanıt verememesi olabilir.
Bu sunucuya bağlanmaya çalışırken harcanan süre [Oturum Açma Öncesi] başlatma=21036 idi; el sıkışma=0; (Microsoft SQL Server, Hata: -2). -
System.InvalidOperationException: Zaman aşımı süresi doldu. Havuzdan bağlantı alınmadan önce zaman aşımı süresi doldu.
Bağlantılar doğru kapatılamazsa hatalar oluşabilir. Havuza alınan tüm bağlantılar kullanımda olduğundan ve maksimum havuz boyutuna ulaşıldığından bu hatalar oluşur. Bağlantı havuzu tükenmiş makalesinde açıklanan adımları izlerseniz bu hatalardan kaçınabilirsiniz.
Not
.NET Framework 4.5 veya sonraki bir sürüm yüklendiğinde ikinci ve üçüncü hata oluşur.
Süresi dolan zaman aşımı hatalarının türünü belirleme
Bağlantı açısından bakıldığında aşağıdaki zaman aşımı sorunlarıyla karşılaşırsınız:
- Bağlantı zaman aşımı (varsayılan olarak 15 saniye)
- Sorgu veya komut zaman aşımı (varsayılan olarak 30 saniye)
Not
Varsayılan değerler kod, bağlantı dizesi veya diğer yöntemler aracılığıyla ayarlanabilir.
Sorun gidermeden önce hata türünü belirlemek için hata iletilerinin tam çağrı yığınını görüntüleyin.
Aşağıdaki bağlantı zaman aşımı çağrısı yığını örneğine bakın:
System.Data.SqlClient.SqlException: Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding. at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj) at System.Data.SqlClient.TdsParserStateObject.ReadSniError(TdsParserStateObject stateObj, UInt32 error) at System.Data.SqlClient.TdsParserStateObject.ReadSni(DbAsyncResult asyncResult, TdsParserStateObject stateObj) at System.Data.SqlClient.TdsParserStateObject.ReadNetworkPacket() at System.Data.SqlClient.TdsParser.ConsumePreLoginHandshake(Boolean encrypt,Boolean trustServerCert, Boolean& marsCapable) at System.Data.SqlClient.TdsParser.Connect(ServerInfo serverInfo, SqlInternalConnectionTds connHandler, Boolean ignoreSniOpenTimeout, Int64 timerExpire, Boolean encrypt, Boolean trustServerCert, Boolean integratedSecurity, SqlConnectionowningObject) at System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfoserverInfo, String newPassword, Boolean ignoreSniOpenTimeout, Int64 timerExpire, SqlConnection owningObject) at System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(String host, String newPassword, Boolean redirectedUserInstance, SqlConnection owningObject, SqlConnectionString connectionOptions, Int64 timerStart) at System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(SqlConnection owningObject, SqlConnectionString connectionOptions, String newPassword, Boolean redirectedUserInstance) at System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, Object providerInfo, String newPassword, SqlConnection owningObject, Boolean redirectedUserInstance) at System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection) at System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnection owningConnection, DbConnectionPool pool, DbConnectionOptions options) at System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject) at System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject) at System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject) at System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection) at System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory) at System.Data.SqlClient.SqlConnection.Open()
SqlConnection.Open
istemcinin bir bağlantı açmaya çalıştığını ve bu nedenle sorguyla ilgili olmadığını gösterir.Aşağıdaki sorgu veya komut zaman aşımı çağrısı yığını örneğine bakın:
System.Data.SqlClient.SqlException: Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding. at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection) at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj) at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) at System.Data.SqlClient.SqlDataReader.ConsumeMetaData() at System.Data.SqlClient.SqlDataReader.get_MetaData() at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString) at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async) at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result) at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method) at System.Data.SqlClient.SqlCommand.ExecuteScalar()
SqlCommand
sınıfı, bağlantıyla değil sorguyla çalışmak için kullanılır.ExecuteScalar
yöntemi bir sorgu çalıştırmak için kullanılır. VeyaExecuteNonQuery
gibiExecuteReader
diğer öğeleri de görebilirsiniz.
Süresi dolan zaman aşımı hatalarını giderme
Sorgu veya komut zaman aşımı hatasıyla karşılaşırsanız bkz . Sorgu zaman aşımı hatalarını giderme.
Bağlantı zaman aşımı hatasıyla karşılaşırsanız aşağıdaki adımları izleyin:
Bağlantı zaman aşımı parametresini artırın.
SQL Server'a bağlanmak için bir uygulama kullanıyorsanız, ilgili bağlantı zaman aşımı parametre değerlerini artırın ve bağlantının sonunda başarılı olup olmadığını denetleyin. Örneğin, kullanıyorsanız
System.Data.SqlClient
SqlConnection.ConnectionTimeout özelliğini 30 veya daha yüksek bir değere ayarlayın.Not
Başka sağlayıcılar kullanıyorsanız SQL istemci programlaması için Giriş sayfasını denetleyin.
SQL Server Management Studio (SSMS) kullanıyorsanız Sunucuya Bağlan iletişim kutusunda Bağlantı Özellikleri sekmesini seçin ve Bağlantı zaman aşımı ayarını daha yüksek bir değere ayarlayın.
Bağlantı sonunda başarılı olursa, bu bir ağ sorunudur. Sorunu çözmek için ağ yöneticinizle birlikte çalışmanız gerekir. Çözümlendikten sonra uygulamanızdaki varsayılan ayarlara geri dönebilirsiniz.
Not
Uygulamada bağlantı zaman aşımını artırmak olası bir yöntemdir, ancak uzun vadeli bir çözüm değildir. Bunun nedeni, bir veri kaynağına bağlanmaya çalıştığınızda bağlantının hızlı bir şekilde (genellikle birkaç milisaniye içinde) gerçekleşmesidir.
Hatanın tipik nedenleri ve çözümleri
Aşağıdaki tabloda zaman aşımı süresi dolan hataların tipik nedenleri ve çözümleri listelemektedir. Daha fazla ipucu ve öneri için bkz . Sorun Giderme: Zaman Aşımı Süresi Doldu.
Tipik nedenler | Çözümlemeler |
---|---|
Sunucu adı yanlış yazıldı. | Doğru sunucu adıyla yeniden deneyin. |
Sunucudaki SQL Server hizmeti çalışmıyor. | SQL Server Veritabanı Altyapısı örneğini başlatın. |
Veritabanı Altyapısı örneğinin TCP/IP bağlantı noktası bir güvenlik duvarı tarafından engellenir. | Güvenlik duvarını Veritabanı Altyapısı'na erişime izin vermek için yapılandırın. |
Veritabanı Altyapısı 1433 numaralı bağlantı noktasında dinlemiyor. Bunun nedeni, bağlantı noktasının değiştirilmesi veya varsayılan örnek olmadığı ve SQL Server Browser hizmetinin çalışmadığıdır. | SQL Server Browser hizmetini başlatın veya komutuyla Sqlcmd -S <ip_addres>,<port> bağlanmak için bir TCP/IP bağlantı noktası numarası belirtin. Hata günlüğünde SQL Server'ın dinlediği bağlantı noktası numarasını bulun. |
SQL Server Browser hizmeti çalışıyor, ancak UDP bağlantı noktası 1434 bir güvenlik duvarı tarafından engellendi. | Güvenlik duvarını sunucuda UPD bağlantı noktası 1434'e erişime izin vermek için yapılandırın veya bağlanılacak TCP/IP bağlantı noktası numarasını belirtin. |
İstemci ve sunucu aynı ağ protokollerini kullanacak şekilde yapılandırılmamış. | SQL Server Yapılandırma Yöneticisi kullanarak sunucu ve istemci bilgisayarlarının en az bir etkin protokole sahip olduğundan emin olun. Örneğin, istemci TCP/IP yuvaları kullanarak bağlanıyorsa ancak SQL Server yalnızca adlandırılmış kanallarda dinliyorsa, bağlantı kurulamaz. |
Ağ, sunucu adını bir IP adresine çözümleyemez; bu, ping veya telnet programları kullanılarak test edilebilir. | Ağınızdaki bilgisayar adı çözümleme sorununu düzeltin veya IP adresini kullanarak sunucuya bağlanın; bu bir SQL Server sorunu değildir. Yardım için Windows belgelerinize bakın veya ağ yöneticinize başvurun. Bağlantıyı test etmek için aşağıdaki komutu kullanın:telnet <ServerName> [<Port>] telnet <IP_Address> <Port> IP adresi kullanmak işe yarıyorsa ancak sunucu adı çalışmıyorsa, bu bir ad çözümleme sorunudur. |
Ağ IP adresini kullanarak bağlanamaz; bu, ping, telnet veya tracert programı kullanılarak test edilebilir. | Ağınızdaki TCP/IP sorununu düzeltin; bu bir SQL Server sorunu değildir. Yardım için Windows belgelerinize bakın veya ağ yöneticinize başvurun. Daha gelişmiş ağ sorunlarını giderme için bkz . 0300 Aralıklı veya Düzenli Ağ Sorunu. |