0

nvarchar(Max) フィールドを持つテーブルがあり、レコードごとに約 50,0000 文字が含まれています。データを挿入すると問題ありませんが、データを更新するとエラーが発生しました:「タイムアウトが発生しました操作のコンパイル前にタイムアウト期間が経過したか、サーバーが応答していません」

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))

私も接続タイムアウトを= 100にしようとします

2番目の方法で最初のレコードを削除して新しいレコードを挿入しようとしましたが、記録されたレコードを削除すると同じエラーがスローされます

4

2 に答える 2

0

SQL サーバー クライアントから更新していますか、それともプログラムで実行していますか? 更新の指示を出す前に、「select .. for update」を実行してみてください。

他に制約がなければ、レコードを削除して新しいレコードとして挿入することも考えられます。

于 2013-10-02T07:38:45.603 に答える
0

通常、SQL Server はタイムアウト エラーをスローしません。使用するクライアント API に関係なく、クライアントによってエラーがスローされるようです。一部のクライアント API。管理対象の SqlClient で、デフォルトのリクエスト タイムアウトを 30 秒に設定します。 を参照SqlCommand.CommandTimeoutしてください。この時間が経過すると、リクエストは中止されます。

したがって、実際にはパフォーマンスの問題があるように見えますUPDATE。おそらくステートメントに 30 秒以上かかっています。問題が何であるかを推測することはできません。何が起こっているのかを知っているのはあなただけです。これをパフォーマンスの問題としてアプローチし、待機とキューを読み、その方法論を適用してみてください。何を探すべきかを知るために、SQL Server がクエリを実行する方法を理解するをお読みください。

私の物理的な力によると、あなたの UPDATE WHERE 句には、検索結果となる検索対象外の条件が含まれています。これは、ロックでブロックするか、IO でタイムアウトするだけです。私の精神力でさえ、情報がなければこれを理解できません...

抽出されたテーブル定義、正確な UPDATE ステートメント、および実行計画(XML です。画像ではありません) を投稿してください。

于 2013-10-02T07:34:50.083 に答える