2013-10-02 4 views
0

레코드 당 최대 50,0000 문자가 들어있는 테이블이 있습니다. 내가 데이터를 삽입하면 OK하지만 갱신 데이터가 다음 오류가 발생했을 때 : 나는 또한 연결을 시도업데이트시 제한 시간이 만료됩니다. nvarchar (최대)

CREATE TABLE [dbo].[tblJudgementText]([JudgementID] [int] NOT NULL, 
    [JudgementText] [nvarchar](max) NULL, 
    [Source] [nvarchar](500) NULL, 
    [UserID] [int] NULL, 
    [ModifiedDate] [datetime] NULL, 
    CONSTRAINT [PK_tblJudgementText] PRIMARY KEY CLUSTERED ([JudgementID] ASC)) 

을 "제한 시간은 응답하지 않는 이전 작업의 편집 또는 서버에 경과 된 시간 초과 기간이 만료" 시간 제한 내가 첫 번째 레코드를 삭제하고 새로운 하나를 삽입하지만 일반적으로 오류를 시간을 밖으로 던져하지 않습니다 같은 오류를

+2

선택 진술을 제공해야하며 일부 테이블 정의를 제공해야합니다. –

+0

더 많은 시간이 걸릴 수 있습니다. 시간 초과 기간을 늘릴 수 있습니다. – Anand

답변

0

SQL 서버를 던져 간격의 저장 삭제하기위한 시도 = 100

2 방식. 어떤 클라이언트 API를 사용하던간에 클라이언트가 오류를 던진 것처럼 보입니다. 일부 클라이언트 API (예 : 관리되는 SqlClient는 기본 요청 제한 시간을 30 초로 설정하고 SqlCommand.CommandTimeout을 참조하십시오.이 시간이 지나면 요청을 중단합니다.

사실상 성능 문제가있는 것 같습니다. UPDATE 문은 아마도 30 초 이상 걸립니다. 우리는 문제가 무엇인지 짐작할 수 없으며 단지 일어난 일에 대한 정보 만 가지고 있습니다. 이 문제를 성능 문제로 해결하려면 Waits and Queues을 읽고 방법론을 적용 해보십시오. 무엇을 찾으려면 Understanding how SQL Server executes a query을 읽으십시오.

내 물리 능력에 따라 UPDATE WHERE 절에 non-sargable 상태가 포함되어있어 스캔이 발생한다고 알려줍니다. 이 중 하나를 차단하거나 입출력에 그냥 시간을 내 pshyhic 힘이이 정보를 승/O를 어떤 정보를 승/O를 알아낼 수 없습니다 ...

정확한 UPDATE 문 및 execution plan (XML! , 그것의 그림이 아니라).

0

SQL 서버 클라이언트에서 업데이트 중이거나 프로그래밍 방식으로 수행 중입니까? 업데이트 명령을 내리기 전에 'select .. for update'를 제공하십시오.

다른 제약 조건이 없으면 레코드를 삭제하고 새 레코드로 삽입한다고 생각할 수도 있습니다.

+0

저장 프로 시저를 사용하여 업데이트 처음으로 레코드를 삭제하고 새 레코드를 삽입했지만 동일한 오류가 발생하면 삭제합니다. – user2837615

+0

한 번에 하나의 레코드를 삭제 한 다음 삽입을 수행 할 때 코드/쿼리를 다시 작성해야 할 수 있습니다. 아마도 당신은 단일 쿼리에서 많은 수의 레코드를 삭제할 수 있습니다. 스토어드 프로 시저에서 스 니펫을 게시 할 수 있다면 좋을 것입니다. –