SQL Server'a bağlanırken zaman aşımı süresi doldu iletileri

Şunlar için geçerlidir: SQL Server

Not

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

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), bu diğer işlemleri engelleyebilir ve bir uygulamayı askıya alabilir. Bu makalede, SQL Server'a bağlandığınızda aldığınız "komut zaman aşımı" ve "bağlantı zaman aşımı" hataları için çözümler sağlanır.

Zaman aşımının süresi doldu hataları doğrulayın

"Zaman aşımı süresi doldu" sorunlarıyla karşılaştığınız zaman aşağıdaki hata iletilerinden birini alırsınız:

  • Zaman aşımı süresi doldu. İşlem tamamlanmadan önce zaman aşımı süresi geçti 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ışması bildirimini kullanmaya çalışırken zaman aşımı süresi doldu. Bunun nedeni, oturum açma öncesi el sıkışmasının başarısız olmuş veya sunucunun zamanında geri yanıt verememiş olması olabilir. Bu sunucuya bağlanmaya çalışırken harcanan süre [Oturum Açma Öncesi] başlatma=23 idi; 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 önce zaman aşımı süresi geçti 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ışması bildirimini kullanmaya çalışırken zaman aşımı süresi doldu. Bunun nedeni, oturum açma öncesi el sıkışmasının başarısız olmuş veya sunucunun zamanında geri yanıt verememiş olması olabilir.
    Bu sunucuya bağlanmaya çalışırken harcanan süre [Pre-Login] başlatma=21036 idi; el sıkışma=0; (Microsoft SQL Server, Hata: -2).

  • System.InvalidOperationException: Zaman aşımı süresi doldu Havuzdan bir bağlantı alınmadan önce zaman aşımı süresi doldu.

    Bağlantılar doğru kapatılamazsa hatalar oluşabilir. Havuzdan alınan tüm bağlantılar kullanımda olduğundan ve havuz boyutu üst sınırına ulaşıldığından bu hatalar oluşur. Bağlantı havuzunun tükenmesi makalesinde açıklanan adımları izlerseniz bu hatalardan kaçınabilirsiniz.

Not

İkinci ve üçüncü hata, .NET Framework 4.5 veya sonraki bir sürüm yüklendiğinde oluşur.

Zaman aşımı süresi doldu hataları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ının çağrı 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ı 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. Ayrıca ExecuteReader veya ExecuteNonQuery gibi diğer öğeleri de görebilirsiniz.

Zaman aşımı süresi doldu hatalarını giderme

  • Bir 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:

    1. 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 System.Data.SqlClient kullanıyorsanız, 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.

    2. 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ızda 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 doldu 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ümler
Sunucu adı yanlış yazılmış. 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ıyla engellenir. Güvenlik duvarını, Veritabanı Altyapısı'na erişime izin verecek şekilde yapılandırın.
Veritabanı Altyapısı 1433 bağlantı noktasını dinlemiyor. Bunun nedeni, bağlantı noktasının değiştirilmesi veya varsayılan örnek olmaması ve SQL Server Browser hizmetinin çalışmamasıdır. SQL Server Browser hizmetini başlatın veya bir TCP/IP bağlantı noktası numarası belirterek Sqlcmd -S <ip_addres>,<port> komutuyla bağlanın. Hata günlüğünde, SQL Server'ın dinleme yaptığı bağlantı noktası numarasını bulun.
SQL Server Browser hizmeti çalışıyor, ancak UDP bağlantı noktası 1434 bir güvenlik duvarıyla engelleniyor. Güvenlik duvarını, sunucuda UPD bağlantı noktası 1434'e erişime izin verecek şekilde yapılandırın veya bağlanılacak TCP/IP bağlantı noktası numarasını belirtin.
İstemci ve sunucu, aynı ağ protokolünü kullanacak şekilde yapılandırılmamış. SQL Server Yapılandırma Yöneticisi'ni kullanarak sunucu ve istemci bilgisayarlarının en az bir etkin protokole sahip olduğundan emin olun. Örneğin, istemci TCP/IP yuvalarını kullanarak bağlanıyorsa ancak SQL Server yalnızca adlandırılmış kanalları dinliyorsa, hiçbir bağlantı kurulamaz.
Ağ, sunucu adını bir IP adresine çözümleyemiyor; 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ı işe yaramıyorsa, bu bir ad çözümleme sorunudur.
Ağ IP adresini kullanarak bağlanamıyor; 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ı gidermek için bkz. 0300 Aralıklı veya Periyodik Ağ Sorunu.

Ayrıca bkz.