2011-11-24 21 views
0

我无法更新SQL Server(2005和2008)中的某些行。如何用最小的锁更新nvarchar(max)列

通常,当我尝试在运行查询(select * from thistable), 时尝试更新一行时,我会启动更新命令并且由于超时/锁定问题而失败。

它只出现在nvarchar(max)/text列的表上!

即使我试图SELECT * FROM thistable WITH(ROWLOCK),我确实遇到同样的问题。

所以我在这里的基本问题是:

我可以激励SQL Server不要锁定超过实际行?

编辑:我先运行SELECT之后,我尝试更新...


有在SQL-服务器锁定一个很好的解释on simple talk

+0

@marc_s:为什么我得到这些锁进行更新? –

+0

@marc_s:所以你没有解决方案吗? –

+0

@marc_s:我想你不明白我的问题。我只更新一(1)行,我不能这样做,因为选择不允许。在没有文本列的表格上,我没有任何问题。 –

回答

1

尝试使用:

SELECT * FROM thistable (NOLOCK) 

您的选择语句。

然后正常运行更新。

+0

会给这个尝试(可惜它涉及到改变更新命令生成器机制) –

+0

我听到你在那里,当你不得不去那些长度时,这是一种痛苦。在我工作的最后一个地方,我们有一个内部策略,在使用NOLOCK完成所有选择语句的情况下,如果您没有:DBA被允许追捕您:-) – shawty

+0

我不能够感谢你!我将尝试下次使用另一个SQL Server :-(NOLOCK为查询做了诀窍(最后)为您的DBA +1(可悲) –

相关问题