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
Summary
SQL Server"Zaman aşımı süresi doldu" hatası, bağlantı veya komut işleminin istemci uygulamasının izin verdiği zaman aşımı aralığı içinde tamamlanmadığını, bu nedenle istemcinin işlemi süresiz beklemek yerine iptal ettiğini gösterir. Bu makale, bağlantı zaman aşımına mı yoksa sorguya mı yoksa komut zaman aşımına mı bastığınızı belirlemenize yardımcı olur. Bağlantı zaman aşımıyla karşılaşabileceğiniz hata iletilerini ve bağlantı zaman aşımlarının ardındaki tipik hizmet, bağlantı noktası, güvenlik duvarı ve ad çözümleme nedenlerini kapsar. Bir istemci uygulaması zaman aşımı hatalarıyla bir SQL Server örneğine aralıklı veya tutarlı olarak bağlanamıyorsa bu makaleyi kullanın.
Sorgu veya komut zaman aşımı hatalarını gidermek için bkz. Sorgu zaman aşımı hatalarını giderme.
Not
Sorun gidermeye başlamadan önce önkoşulları denetleyin ve denetim listesini inceleyin.
SQL Server bağlanırken zaman aşımı süresi doldu hata iletileri
"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. Havuz oluşturmanın nasıl çalıştığı hakkında daha fazla bilgi için bkz. SQL Server bağlantı havuzu (ADO.NET).
Not
İkinci ve üçüncü hatalar, .NET Framework 4.5 veya sonraki bir sürüm yüklendiğinde oluşur.
Oluşan zaman aşımı türünü belirleme
Veritabanı uygulamalarında yaygın olarak gözlenen iki tür zaman aşımı sorunu vardır:
- Bağlantı zaman aşımı (varsayılan olarak 15 saniye)
- Sorgu veya komut zaman aşımı (varsayılan olarak 30 saniye)
Bu iki sorun, farklı kaynaklardan geldiğinden ve veritabanı uygulaması etkileşiminin ayrı bağımsız aşamalarında gerçekleştiğinden doğası gereği çok farklıdır. Veritabanı altyapısına ilk bağlantı başarısız olduğunda bağlantı zaman aşımı oluşur. Öte yandan sorgu veya komut zaman aşımı, bir veritabanı sunucusuyla uygulama etkileşiminin çok daha sonra gerçekleşir. İlk bağlantı başarıyla tamamlandı, ancak veritabanı sunucusuna gönderdiğiniz bir sorgunun tamamlanması uzun sürüyor.
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.Openistemcinin 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()SqlCommandsınıfı, bağlantıyla değil sorguyla çalışmak için kullanılır.ExecuteScalaryöntemi bir sorgu çalıştırmak için kullanılır. VeyaExecuteReadergibiExecuteNonQuerydiğer öğeleri de görebilirsiniz.Sorgu veya komut zaman aşımı hatasıyla karşılaşırsanız bkz. Sorgu zaman aşımı hatalarını giderme.
SQL Server bağlantı zaman aşımı hatalarını giderme
Bağlantı zaman aşımı hatasıyla karşılaşırsanız şu 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.SqlClientSqlConnection.ConnectionTimeout özelliğini 30 veya daha yüksek bir değere ayarlayın. Geçerli Microsoft kullanırsanız. Data.SqlClient sürücüsü, eşdeğer SqlConnection.ConnectionTimeout özelliğini 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ışın. Çö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.
Bağlantı zaman aşımı hatalarının hizmet, bağlantı noktası ve protokol nedenleri
Aşağıdaki tabloda SQL Server hizmet, bağlantı noktası ve ağ protokolü zaman aşımı süresi dolan hataların nedenleri ve bunların nasıl çözüleceğini listeledik. Daha fazla ipucu ve öneri için bkz . Sorun Giderme: Zaman Aşımı Süresi Doldu.
| Tipik nedenler | Çözümlemeler |
|---|---|
| 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. Daha fazla bilgi için bkz. Sunucuyu belirli bir TCP bağlantı noktasını dinleyecek şekilde yapılandırma. |
| 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. |
Bağlantı zaman aşımı hatalarının ağ ve ad çözümleme nedenleri
Aşağıdaki tabloda, DNS ad çözümleme hataları ve TCP/IP yönlendirme sorunları gibi zaman aşımı süresi dolan hataların ağ düzeyinde nedenleri ve bunların nasıl çözüleceğini listelemektedir.
| Tipik nedenler | Çözümlemeler |
|---|---|
| Sunucu adı yanlış yazıldı. | Doğru sunucu adıyla yeniden deneyin. |
| Ağ, sunucu adını bir IP adresine çözümleyemiyor. Ping veya telnet programlarını kullanarak bu sorunu test edin. | Ağınızdaki bilgisayar adı çözümleme sorununu düzeltin veya IP adresini kullanarak sunucuya bağlanın. Bu sorun SQL Server bir sorun 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ğlanamıyor. Ping, telnet veya tracert programını kullanarak bu sorunu test edin. | Ağınızdaki TCP/IP sorununu düzeltin. Bu sorun SQL Server bir sorun 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. |