제한 시간이 만료되었습니다. 작업이 완료되기 전에 시간 초과 기간이 경과했거나 서버가 응답하지 않습니다. 그 진술서는 만료되었습니다


295

내 웹 사이트 (하루 20000-60000)에 많은 사용자가 있는데,이 파일은 모바일 파일 용 다운로드 사이트입니다. 서버 (Windows Server 2008-R2)에 원격으로 액세스 할 수 있습니다.
내가받은 "서버를 사용할 수 없습니다" 오류 전에,하지만 지금은 연결 시간 초과 오류를보고하고있다.
나는 이것에 익숙하지 않습니다-왜 발생하고 어떻게 해결할 수 있습니까?

전체 오류는 다음과 같습니다.

'/'응용 프로그램에 서버 오류가 있습니다. 제한 시간이 만료되었습니다. 작업이 완료되기 전에 시간 초과 기간이 경과했거나 서버가 응답하지 않습니다. 그 진술서는 만료되었습니다. 설명 : 현재 웹 요청을 실행하는 동안 처리되지 않은 예외가 발생했습니다. 오류 및 코드에서 발생한 위치에 대한 자세한 정보는 스택 추적을 검토하십시오.

예외 정보 : System.Data.SqlClient.SqlException : 시간 초과가 만료되었습니다. 작업이 완료되기 전에 시간 초과 기간이 경과했거나 서버가 응답하지 않습니다. 그 진술서는 만료되었습니다.

소스 오류 :

현재 웹 요청을 실행하는 동안 처리되지 않은 예외가 생성되었습니다. 예외의 출처와 위치에 관한 정보는 아래 예외 스택 추적을 사용하여 식별 할 수 있습니다.

스택 추적 :

[SqlException (0x80131904) : 시간이 만료되었습니다. 작업이 완료되기 전에 시간 초과 기간이 경과했거나 서버가 응답하지 않습니다. 문이 종료되었습니다.]
System.Data.SqlClient.SqlConnection.OnError (SqlException 예외, 부울 breakConnection) +404
System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning () +412
System.Data.SqlClient.TdsParser.Run (RunBehavior runBehavior , SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) +1363
System.Data.SqlClient.SqlCommand.FinishExecuteReader (SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString) +6387741
System.Data.SqlClient.SqlCommand.RunExecuteReaderTds (CommandBehavior cmdBehavior , RunBehavior runBehavior, Boolean returnStream, Boolean async) +6389442
System.Data.SqlClient.SqlCommand.RunExecuteReader (CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult 결과) +538
System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery (DbAsyncResult 결과, 문자열 methodName, 부울 sendToPipe) +689
System.Data.SqlClient.SqlCommand.ExecuteNonQuery () +327
NovinMedia.Data.DbObject.RunProcedure (String storedProcName, IDataParameter [] 매개 변수, Int32 및 rows 영향을 받음) +209
DataLayer.OnlineUsers.Update_SessionEnd_And_Online (Object Session_End, Boolean Online) +440
NiceFileExplorer.Global.Application_Start (오브젝트 송신자, EventArgs e) +163

[HttpException (0x80004005) : 시간이 만료되었습니다. 작업이 완료되기 전에 시간 초과 기간이 경과했거나 서버가 응답하지 않습니다. 문이 종료되었습니다.]
System.Web.HttpApplicationFactory.EnsureAppStartCalledForIntegratedMode (HttpContext context, HttpApplication app) +4052053
System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS (IntPtr appContext, HttpContext context, MethodInfo [] handlers) +191
System.Web.HttpApplication. InitSpecial (HttpApplicationState 상태, MethodInfo [] 처리기, IntPtr appContext, HttpContext 컨텍스트) +352
System.Web.HttpApplicationFactory.GetSpecialApplicationInstance (IntPtr appContext, HttpContext context) +407
System.Web.Hosting.PipelineRuntime.InitializeApplication (IntPtr appContext) +375

[HttpException (0x80004005) : 시간이 만료되었습니다. 작업이 완료되기 전에 시간 초과 기간이 경과했거나 서버가 응답하지 않습니다. 문이 종료되었습니다.]
System.Web.HttpRuntime.FirstRequestInit (HttpContext context) +11686928 System.Web.HttpRuntime.EnsureFirstRequestInit (HttpContext context) +141 System.Web.HttpRuntime.ProcessRequestNotificationPrivate (IIS7WorkerRequest wr, HttpContext context) +4863749


ANSWERS AFTER 편집 :
Application_Start에서는 Global.asax다음과 같다 :

protected void Application_Start(object sender, EventArgs e)
{
    Application["OnlineUsers"] = 0;

    OnlineUsers.Update_SessionEnd_And_Online(
        DateTime.Now,
        false);

    AddTask("DoStuff", 10);
}

호출되는 저장 프로시 저는 다음과 같습니다.

ALTER Procedure [dbo].[sp_OnlineUsers_Update_SessionEnd_And_Online]
    @Session_End datetime,
    @Online bit
As
Begin
    Update OnlineUsers
    SET
        [Session_End] = @Session_End,
        [Online] = @Online

End

온라인 사용자를 유치하는 두 가지 방법이 있습니다.

  1. 사용 Application["OnlineUsers"] = 0;
  2. 데이터베이스를 사용하는 다른 하나

따라서 방법 # 2의 모든 온라인 사용자를에서 재설정했습니다 Application_Start. 해당 테이블에 482,751 개가 넘는 레코드가 있습니다.


1
이렇게 적혀로 기본값은 15 초입니다
V4Vendetta

1
근본 원인을 분석하는 것이 더 좋습니다. 이러한 문제를 일으키는 데는 여러 가지 이유가 있습니다. 가장 기본적인 것은 복잡한 쿼리 구조입니다. 표에 16 진수 값으로 저장된 이미지를 가져올 때도 같은 문제가 발생했습니다.
Vijay Kumbhoje 2016 년

위의 원인 이외의 다른 항목을 하나 더 추가하겠습니다. 잠금 시간 초과 : docs.microsoft.com/en-us/sql/t-sql/statements/… 이 스레드가 잠금을 너무 오래 기다리는 경우 시간이 초과됩니다. 위의 문서.
허버트 유

답변:


344

예상보다 오래 걸리는 쿼리가있는 것 같습니다. 스택 추적과 코드에서 정확히 어떤 쿼리인지 확인할 수 있어야합니다.

이 유형의 시간 초과에는 세 가지 원인이있을 수 있습니다.

  1. 어딘가에 교착 상태가 있습니다
  2. 데이터베이스의 통계 및 / 또는 쿼리 계획 캐시가 잘못되었습니다
  3. 쿼리가 너무 복잡하여 조정해야합니다.

교착 상태는 해결하기 어려울 수 있지만 그 경우에 해당하는지 쉽게 판단 할 수 있습니다. Sql Server Management Studio를 사용하여 데이터베이스에 연결하십시오. 왼쪽 분할 창에서 서버 노드를 마우스 오른쪽 단추로 클릭하고 활동 모니터를 선택 하십시오 . 실행중인 프로세스를 살펴보십시오. 일반적으로 대부분 유휴 상태이거나 실행 중입니다. 문제가 발생하면 프로세스 상태별로 차단 된 프로세스를 식별 할 수 있습니다. 프로세스를 마우스 오른쪽 버튼으로 클릭하고 세부 정보를 가 마지막으로 실행 한 쿼리가 표시됩니다.

두 번째 문제는 데이터베이스가 차선의 쿼리 계획을 사용하게합니다. 통계를 지우면 해결할 수 있습니다.

exec sp_updatestats

그래도 작동하지 않으면 시도해 볼 수도 있습니다

dbcc freeproccache

서버에 과부하가 걸리면 저장된 모든 procs와 쿼리가 처음 실행될 때 다시 컴파일되므로 일시적으로 큰 성능 저하가 발생하기 때문에이 작업을 수행하지 않아야합니다. 그러나 문제가 때때로 발생 하고 스택 추적에 따라 응용 프로그램이 시작되고 있음을 나타내므로 때때로 실행되는 쿼리를 실행하고 있다고 생각합니다. SQL Server가 이전 쿼리 계획을 재사용하지 않도록 강요하면 더 나을 수 있습니다. 이를 수행하는 방법에 대한 자세한 내용 은 이 답변 을 참조하십시오 .

이미 세 번째 문제를 다루었지만 Sql Server Management Studio와 같은 쿼리를 수동으로 실행하여 쿼리를 조정해야하는지 여부를 쉽게 확인할 수 있습니다. 쿼리를 완료하는 데 시간이 너무 오래 걸리면 통계를 재설정 한 후에도 조정해야합니다. 이에 대한 도움을 받으려면 정확한 질문을 새 질문에 게시해야합니다.


39
나는이 같은 오류가 있었지만 '단지'8 초가 걸리는 쿼리에서 ... exec sp_updatestats내 문제를 해결하는 데 대한 팁 . 많은 감사합니다!
nrod

2
이와 같은 문제를 해결하는 것은 시간 제한이나 연결 풀 크기 조정과 관련이 없습니다. 근본 원인을 파악하고 파악해야합니다. 근본 원인을 해결하는 데 도움이 필요한 경우 자신의 질문을 게시 할 수 있습니다.
Marnix van Valen

5
이것은 교착 상태가 아닙니다. 과도한 차단으로 인해 발생할 수 있지만 교착 상태는 1 초 안에 해결되며 다른 오류가 발생합니다. 과도한 차단 일 수 있지만 교착 상태는 아닙니다.
Michael J Swart

1
이것이 연결 시간 초과가 아닌 명령 시간 초과인지 확실합니까? "System.Data.SqlClient.SqlConnection.OnError"는 연결 문제를 나타냅니다.
Mike W

1
@PrashantPimpale 의존 합니다. 잘못된 통계로 인해 잘못된 실행 계획이 발생하는 프로덕션 환경에 심각한 문제가있는 경우에는 해결책이 될 수 있습니다. 하드웨어 오류와 같은 예외적 인 문제를 제외하고 통계를 업데이트해도 데이터베이스가 손상되지 않습니다. 비트에 대한 쿼리 속도가 느려질 수 있습니다. 결국, 그것은 당신의 전화입니다.
Marnix van Valen

155

저장 프로 시저를 실행하는 코드에는 다음과 같은 내용이 있어야합니다.

SqlCommand c = new SqlCommand(...)
//...

이러한 코드 줄을 추가하십시오.

c.CommandTimeout = 0;

작업을 완료하는 데 필요한 시간만큼 기다립니다.


143
또한 0 값은 권장 되지 않습니다 . 0 값은 제한이 없으며 명령을 실행하려고하면 무기한 대기하므로 CommandTimeout에서 피해야합니다. 명령 소요 시간을 배우고 필요한 경우 시간 종료 값을 늘리는 것이 좋습니다.
Otiel

7
Otiel에 동의하고 귀하의 답변을 하향 투표했습니다. commandTimeout을 0으로 설정하면 웹 서버가 응답하지 않는 데이터베이스 서버에서 복구 할 기회를주지 않습니다. 두 번째로 기본 시간 제한에 도달하면 원인을 고려해야합니다. 대부분의 경우 시간 초과 시간을 늘리는 것보다 쿼리를 수정하는 것이 좋습니다.
Maarten Kieft

10
나는 그것을 추천하지 않는 함정에 빠지지 않을 것입니다. 그것은 나와 내 매일 예약 된 작업에 매우 유용했습니다. 무한 시간 초과가 있어도 프로세스가 완료되지 않고 문제가 발생하더라도 오류를 반환하지 않습니다. 간단히 말해, 프로세스를 완료하는 데 충분한 시간을 할당하지 않았기 때문에 나중에 문제를 발생시키지 않고 필요할 때마다 쿼리를 완료 할 수 있습니다. 멀티 스레딩으로 프로그램을 잠그지 않아도됩니다.
WonderWorker

2
예, 설정하지 않은 대용량 데이터 전송의 경우에는 의미가 없습니다. 수백만 행을 전송하는 경우 Otiel과 BlackHawkDesign의 말이 의미가 없습니다.
bluerubez

20 년 간의 데이터 중심 개발에서이 작업을 수행 할 필요가 없었습니다. 성능이 향상되고 하루 종일 데이터베이스에서 단일 프로세스를 수행 할 수있는 기회를 제공하지 않는 합리적으로 간단한 솔루션이 거의 항상 있습니다. 대부분의 DB 성능 문제는 몇 배 더 빠른 속도로 수행되는 위치에 맞춰질 수 있습니다. 즉, 완료하기 위해 3 시간 동안 대기중인 프로세스는 아마도 3 분 또는 3 초로 조정될 수 있습니다.
b_levitt

25

당신은 설정할 수 있습니다 CommandTimeout장기 실행 SQL 트랜잭션을 허용하도록 SQL 명령 특성을 있습니다.

시간 초과를 일으키는 SQL 쿼리를 봐야 할 수도 있습니다.


안녕하세요, "또는 SQL Server 2008에서 시간 초과를 일으키는 SQL 쿼리를 봐야합니다"-> 해당 시간 초과를 어디서 확인해야합니까?
SilverLight

스택 추적이 가리키고있는 것처럼 DataLayer.OnlineUsers.Update_SessionEnd_And_Online에서 호출 된 저장 프로 시저를 테스트해야 할 수도 있습니다. 라이브 데이터베이스의 사본을 테스트하고 필요한 매개 변수를 전달하여 저장 프로 시저를 실행하십시오. 완료하는 데 30 초 이상 걸리면 시간이 초과됩니다. SQL Server Management Studio에 액세스 할 수 있다고 가정합니다.
Kev Ritchie

예, SQL Server 2008에 액세스 할 수 있습니다.
SilverLight

문제를 일으키는 저장 프로 시저를 찾은 경우 데이터베이스 튜닝 관리자를 통해 저장 프로 시저에 포함 된 쿼리를 실행할 수 있습니다. 여기에는 인덱스 등이 필요한지 제안합니다. 여기 링크 msdn.microsoft.com/en-us/library /ms174202.aspx
Kev Ritchie

12

이전의 모든 답변이 문제를 해결하지만 모든 경우를 다루지는 않았습니다.

Microsoft는 지원되는 운영 체제에 대해이 문제를 확인하고 2011 년에 해결 했으므로 다음과 같은 스택 추적을 얻는 경우 :

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()
at System.Data.SqlClient.TdsParserStateObject.ReadSniError(TdsParserStateObject stateObj, UInt32 error)
at System.Data.SqlClient.TdsParserStateObject.ReadSni(DbAsyncResult asyncResult, TdsParserStateObject stateObj)

.NET 어셈블리를 업데이트해야 할 수도 있습니다.

미러 된 데이터베이스에 대한 연결 재시도 알고리즘의 오류로 인해이 문제가 발생합니다.

재시도 알고리즘이 사용되면 데이터 공급자는 첫 번째 읽기 (SniReadSync) 호출이 완료 될 때까지 기다립니다. 호출은 SQL Server를 실행하는 백 엔드 컴퓨터로 전송되며 대기 시간은 연결 시간 제한 값에 0.08을 곱하여 계산됩니다. 그러나 응답이 느리고 대기 시간이 만료되기 전에 첫 번째 SniReadSync 호출이 완료되지 않으면 데이터 공급자가 운명 상태로의 연결을 잘못 설정합니다.

자세한 내용은 KB 2605597을 참조하십시오.

https://support.microsoft.com/kb/2605597


9

아마도 누군가에게 유용 할 것입니다. 나는 같은 문제에 직면했고 내 경우에는 SqlConnection이 열렸고 약 2500 회 반복하여 루프에서 호출 한 메소드에 배치되지 않았기 때문입니다. 연결 풀이 소진되었습니다. 적절한 처분은 문제를 해결했습니다.


이! 정확히 이것. 내 문제는 다른 스레드에서 메소드를 기다리지 않고 메소드를 시작했다는 것입니다 (사용자가 해당 메소드의 결과, 백그라운드 스크립트를 필요로하지 않기 때문에). 처분하지 않고 ( using블록 사용 )이 시간 초과 문제가 있습니다. 이것은 그것을 해결하는 것처럼 보였습니다.
CularBytes

연결 풀 최대 값에 도달했거나 시간 초과가 만료되어 시간 초과 오류가 발생 했습니까? 작업이 완료되기 전에 시간 초과 기간이 경과했거나 서버가 응답하지 않습니다. 최대 풀에 도달하면 연결이 끊어진 것으로 확인하는 것이 좋습니다. 그러나 서버가 응답하지 않는 오류가 발생합니다.
Jeeva Subburaj

8

나는 약 3 일 동안 동일한 문제에 직면했다. 우리의 레코드 수가 많지 않기 때문에 선임 개발자가 데이터베이스에 2 개의 이미지와 지문을 유지합니다. 오랜 시간이 걸리는이 16 진수 값을 가져 오려고하면 약 38 초 동안 프로 시저를 실행하는 평균 시간을 계산합니다. 기본 commandtimeout은 30 초이므로 저장 프로 시저를 실행하는 데 필요한 평균 시간보다 짧습니다. 아래와 같이 명령 시간 초과를 설정했습니다.

cmd.CommandTimeout = 50

제대로 작동하지만 때로는 쿼리에 50 초 이상이 걸리면 동일한 오류가 표시됩니다.


8

CommandTimeout 속성을 설정해야합니다. DbContext 하위 클래스에서 CommandTimeout 속성을 설정할 수 있습니다.

public partial class StudentDatabaseEntities : DbContext
{
    public StudentDatabaseEntities()
        : base("name=StudentDatabaseEntities")
    {
        this.Database.CommandTimeout = 180;
    }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        throw new UnintentionalCodeFirstException();
    }

    public virtual DbSet<StudentDbTable> StudentDbTables { get; set; }
}

4

최근 에이 오류가 발생했으며 잠시 조사 한 결과 데이터베이스를 보유하고있는 디스크의 공간이 부족하다는 원인이 발견되었습니다 (1GB 미만).

데이터베이스 파일 (.mdf 및 .ldf)을 동일한 서버 (더 많은 공간이있는)의 다른 디스크로 이동하자마자 3 초 내에 시간이 초과 된 동일한 페이지 (쿼리 실행)가 나타납니다.

이 오류를 해결하는 동안 조사해야 할 또 다른 사항은 데이터베이스 로그 파일의 크기입니다. 로그 파일을 축소해야 할 수도 있습니다.


3

sp_foo에서 큰 계산에 많은 시간이 걸리는 문제가 있으므로이
작은 코드로 수정 했습니다.

public partial class FooEntities : DbContext
{
   public FooEntities()
         : base("name=FooEntities")
    {
        this.Configuration.LazyLoadingEnabled = false;

        // Get the ObjectContext related to this DbContext
        var objectContext = (this as IObjectContextAdapter).ObjectContext;

        // Sets the command timeout for all the commands
        objectContext.CommandTimeout = 380;
    }

3

기본 시간 제한은 15 초이며 0으로 제한하지 않고 다른 숫자는 초 수로 변경합니다.

코드에서

using (SqlCommand sqlCmd = new SqlCommand(sqlQueryString, sqlConnection))
   {
      sqlCmd.CommandTimeout = 0; // 0 = give it as much time as it needs to complete
      ...
    }

Web.Config에서 "Command Timeout = 0;" 시간 초과 또는 1 시간 미만 (3600 초)

  <add name="ConnectionString" connectionString="Data Source=ServerName;User ID=UserName;Password=Password;Command Timeout=3600;" providerName="System.Data.SqlClient" />

2
두 가지 다른 시간 초과입니다. 첫 번째 제안은 그 질문에 대한 것입니다. 두 번째는 연결 공급자가 지원하는 경우에만 작동하지만 SqlClient는 지원하지 않습니다. 여하튼, 시간 종료 0은 프로덕션에서 좋은 생각이 아닙니다. 일반적인 기본값은 30 초입니다.
Suncat2000

2

@SilverLight .. 이것은 데이터베이스 개체의 문제입니다. 잘못 작성된 쿼리이거나 누락 된 인덱스 일 수 있습니다. 그러나 지금은 데이터베이스 객체의 문제를 조사하지 않고 시간 초과를 늘리는 것이 좋습니다.

NovinMedia.Data.DbObject.RunProcedure(String storedProcName, IDataParameter[] parameters, Int32& rowsAffected) +209

이 코드 줄에 중단 점을 두어 프로 시저 이름을 찾은 다음 실행 계획을보고 프로 시저를 최적화하십시오.

저장 프로 시저에 대한 세부 정보를 게시 할 때까지 더 이상 도와 드릴 수 없습니다.


저장 프로시 저는 멋진 작업을 수행하지 않습니다. 그러나 절차가 실행되는 동안 OnlineUsers 테이블이 잠겨있는 것 같습니다. 위해 Application_Start에서 무슨 일이 일어나고 있는지보고 SQL 프로파일 러를 사용해보십시오
아 미트 라이 샤르마에게

2

시험

EXEC SP_CONFIGURE 'remote query timeout', 1800
reconfigure
EXEC sp_configure

EXEC SP_CONFIGURE 'show advanced options', 1
reconfigure
EXEC sp_configure

EXEC SP_CONFIGURE 'remote query timeout', 1800
reconfigure
EXEC sp_configure

그런 다음 색인을 다시 작성하십시오.


8
당신의 해결책을 설명 할 수 있습니까?
Hp93

0

SQL 쿼리가 sqlCommand.CommandTimeout 특성에서 설정 한 시간보다 더 오래 걸리기 때문에 제한 시간이 만료되었습니다.

분명히이 문제를 해결하기 위해 CommandTimeout을 늘릴 수 있지만 그렇게하기 전에 색인을 추가하여 쿼리를 최적화해야합니다. 에서 검색어를 실행하면실제 실행 계획 을 포함하여 Sql Server Management Studio 실행 하면 Sql Server Management Studio에서 적절한 인덱스를 제안합니다. 대부분의 경우 쿼리를 최적화 할 수 있으면 시간 초과 문제가 해결됩니다.


0

TLDR :

  1. 데이터 볼륨, 네트워크 설정 및 코드가 변경되지 않은 가장 빠른 수정은 응용 프로그램과 DB 서버를 모두 재부팅하는 것입니다. 우리는 항상 원칙적으로 그렇게합니다
  2. 교체가 필요한 하드 드라이브 고장 표시 일 수 있음-시스템 알림 확인

여러 가지 이유로이 오류가 자주 발생했으며 다음과 같은 다양한 솔루션이 있습니다.

  1. SqlBulkCopy 를 사용하도록 코드를 리팩토링
  2. 다양한 답변에 명시되거나 근본 원인 확인에 따라 시간 초과 값 증가 ( 데이터 관련이 아닐 수 있음 )
  3. 연결 시간 초과 (기본값 15 초)-TCP / PORT 관련-종료하기 전에 SQL Server와의 연결이 설정 될 때까지 기다리는 데 걸리는 시간 ( 문제 해결 체크리스트 )
  4. 명령 시간 초과 (기본값 30 초)-쿼리 실행을 기다리는 데 걸리는 시간-쿼리 실행 / 네트워크 트래픽 관련- 문제 해결 프로세스도 있습니다 (또 다른 편리한 MSDN 문서).
  5. 서버 및 응용 프로그램 및 DB 서버 (별도의 경우) 모두 재부팅-코드와 데이터가 변경되지 않은 경우 환경이 변경되어야합니다.-가장 먼저해야 할 일입니다. 일반적으로 패치 (운영 체제, .Net Framework 또는 SQL Server 패치 또는 업데이트)로 인해 발생합니다. 특히 시간 초과 예외가 아래와 같이 표시되는 경우 (Azure를 사용하지 않더라도) :
    • System.Data.Entity.Core.EntityException : 일시적인 오류로 인해 예외가 발생했습니다. SQL Azure 데이터베이스에 연결하는 경우 SqlAzureExecutionStrategy를 사용해보십시오. ---> System.Data.Entity.Core.EntityCommandExecutionException : 명령 정의를 실행하는 동안 오류가 발생했습니다. 자세한 내용은 내부 예외를 참조하십시오. ---> System.Data.SqlClient.SqlException : 서버에서 결과를 수신 할 때 전송 레벨 오류가 발생했습니다. (제공자 : TCP 공급자, 오류 : 0-세마포 시간 초과 기간이 만료되었습니다.) ---> System.ComponentModel.Win32Exception : 세마포 시간 초과 기간이 만료되었습니다.

0

또한 보류중인 거래가 없는지 확인하십시오. :)

나는 몇 가지 테스트를하고 있었고 안전한 거래를 시작했지만 결코 닫지 않았습니다. 나는 오류가 더 명백해 졌으면 좋겠다.


0

에 힘든 시간을 보냈습니다 Timeout expired/max pool reached Sqlexception. 해결 방법으로 서버 또는 서비스를 다시 시작하지 못하게하기 위해 MAX SERVER MEMORYSQL Server 에서 변수를 수정합니다 (SQL Managment Studio 또는 T-SQL을 통해).

DECLARE @maxMem INT = 3000 --Max. memory for SQL Server instance in MB
EXEC sp_configure 'show advanced options', 1
RECONFIGURE

이 문제는 다시 발생할 때까지 일시적으로 해결됩니다. 우리의 경우 앱 수준에서 연결 누출과 관련이 있다고 생각합니다.


0

우리는 최근 에 버그가 포함 된 SqlClient( Microsoft.Data.SqlClient) NuGet 버전으로 업그레이드했습니다 . 이 버그는 1.x주기의 수명 동안 소개되었으며 이미 수정되었습니다. 수정 사항은이 문서 작성 당시에는 제공되지 않은 2.0.0 릴리스에서 제공 될 예정입니다. 미리보기가 가능합니다.

https://github.com/dotnet/SqlClient/issues/262 에서 세부 정보를 확인할 수 있습니다.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.