0

少量の行を持つテーブルで単純な選択を実行していますが、それは永遠に実行されています。実行すると問題なく返されることがわかりました:

SELECT TOP 23 * FROM MyTable ORDER BY 1

ただし、実行すると永久にハングします。

SELECT TOP 24 * FROM MyTable ORDER BY 1

sp_whoまたはを実行するsp_who2と、ブロックする人は誰もいません。なぜこれが起こるのですか?どうすれば修正できますか?

4

1 に答える 1

0

(コミットされていないトランザクションを無視して) on で実行するとnolock、すべての行を選択できるはずです。

SELECT * FROM MyTable WITH (NOLOCK)

コミットまたはロールバックされていないトランザクションがどこかにあります (なぜ に表示されないのかわかりませんsp_who)。以下を実行して、すべてのトランザクションを強制的にロールバックすることができますnolock

USE master
ALTER DATABASE DbName SET SINGLE_USER WITH ROLLBACK IMMEDIATE
ALTER DATABASE DbName SET MULTI_USER
于 2015-03-19T20:42:44.057 に答える