少量の行を持つテーブルで単純な選択を実行していますが、それは永遠に実行されています。実行すると問題なく返されることがわかりました:
SELECT TOP 23 * FROM MyTable ORDER BY 1
ただし、実行すると永久にハングします。
SELECT TOP 24 * FROM MyTable ORDER BY 1
sp_who
またはを実行するsp_who2
と、ブロックする人は誰もいません。なぜこれが起こるのですか?どうすれば修正できますか?
少量の行を持つテーブルで単純な選択を実行していますが、それは永遠に実行されています。実行すると問題なく返されることがわかりました:
SELECT TOP 23 * FROM MyTable ORDER BY 1
ただし、実行すると永久にハングします。
SELECT TOP 24 * FROM MyTable ORDER BY 1
sp_who
またはを実行するsp_who2
と、ブロックする人は誰もいません。なぜこれが起こるのですか?どうすれば修正できますか?
(コミットされていないトランザクションを無視して) 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