2011-11-24 11 views
0

SQL Server(2005および2008)の一部の行を更新するのに問題があります。最小限のロックでnvarchar(max)列のテーブルを更新する方法

実行中のクエリ(select * from thistable)のある行を更新しようとすると、 私は更新コマンドを開始しますが、タイムアウト/ロックの問題により失敗します。

nvarchar(max)/text列の表にのみ表示されます。

SELECT * FROM thistable WITH(ROWLOCK)にしようとしても同じ問題が発生します。

だからここに私の基本的な質問です:

は、私が実際の行よりも多くのロックしないでSQL Serverのやる気を引き出すことはできますか?

編集:私は、最初のSQL-Serverでロックに多大な説明があり


...私は更新しようその後SELECTを実行on simple talk

+0

@marc_s:なぜこれらのロックを1回更新するのですか? –

+0

@marc_s:私のための解決策はありませんか? –

+0

@marc_s:あなたは私の問題を理解していないと思います。私はselect(1)行だけを更新します。selectはそれを許可していないため、行えません。テキスト列のないテーブルでは問題はありません。 –

答えて

1

使用してみてください:

SELECT * FROM thistable (NOLOCK) 
selectステートメントの

通常の方法でアップデートを実行してください。

+0

これを試してみてください(悲しいことに、 –

+0

私はそこにいると聞いていますが、あなたはその長さに行かなければならないときは苦痛です。最後にNOLOCKを使用して、DBAがあなたを狩ることを許可されたすべてのSELECTステートメントを社内ポリシーに入れました:-) – shawty

+0

十分にありがとうございます!私は次回に別のSQLサーバを使用しようとします:-(NOLOCKはDBAのためにトリック(最後)+1をしました(悲しいことに) –

関連する問題