Самый простой запрос SQL никогда не возвращается - PullRequest
2 голосов
/ 07 января 2011

У меня есть SQL-запрос, который довольно просто select * from tblOrders where customerID = 5000, но он никогда не возвращается.Я подождал 10 минут и сдался.

Самое странное, что другие запросы в той же БД, но в другой таблице работают нормально.Удаление условия where также не помогает, поэтому кажется, что таблица как-то не отвечает.Это около 30000 строк, поэтому это не самая большая таблица.

Я использую MS SQL SMS 2008 Express против SQL Server 2008 Express, работающего на удаленном сервере.

Ответы [ 3 ]

5 голосов
/ 07 января 2011

Попробуйте это, чтобы обойти любые блокировки на столе -

select * from tblOrders(nolock) where customerID = 5000
3 голосов
/ 07 января 2011

Звучит так, как будто ваша таблица заблокирована

выполните этот запрос, чтобы увидеть, какие блокировки удерживаются против него.

USE master;
GO
EXEC sp_lock;
GO

но блокировка таблицы - это целое поле мышления, вот некоторыеинформация в системе sp_lock хранится в протоколе http://msdn.microsoft.com/en-us/library/ms187749.aspx

когда вы найдете блокировку, вы можете убить ее

KILL { session ID | UOW } [ WITH STATUSONLY ] 

http://msdn.microsoft.com/en-us/library/ms173730.aspx

0 голосов
/ 07 января 2011

Я согласен с другими, что это, скорее всего, проблема блокировки.По умолчанию доступ для записи в таблицу по-прежнему блокирует доступ только для чтения.

Начиная с SQL Server 2005 это можно исправить с помощью «контроля версий строк».Вам необходимо изменить настройки базы данных, чтобы включить это.

Более подробное объяснение см. В руководстве:

http://msdn.microsoft.com/en-us/library/ms345124%28SQL.90%29.aspx

...