Тайм-аут базы данных SQL Server 2008 после удаления - PullRequest
1 голос
/ 27 марта 2010

Я выполняю следующий оператор, он работает локально с SQL Server 2008, однако на сервере разработки есть SQL Server 2008 Express, и после выполнения оператора sql я не могу выполнить инструкции SELECT для таблицы в котором я удалил запись. Обе базы данных были созданы с использованием одинаковых сценариев создания таблиц.

"DELETE FROM [dbo].[tblMiddayMover] WITH (ROWLOCK)  WHERE [idMiddayMover] = @IdMiddayMover"

По каким причинам это утверждение может привести к зависанию базы данных.

После выполнения этого оператора следующий оператор SELECT вызывает ошибку.

"SELECT * FROM [dbo].[tblMiddayMover] WHERE [fldActive] = 1"

Я получаю следующую ошибку:

Время ожидания истекло. Время ожидания истекло до завершения операции или сервер не отвечает.

Я могу делать операторы выбора на любой другой таблице без проблем.

Я выполнил предложенную команду, здесь вывод. альтернативный текст http://softwaredesignexcellence.com/capture.PNG

Ответы [ 2 ]

1 голос
/ 27 марта 2010

Скорее всего, вы создали транзакцию вокруг своего заявления, которая все еще открыта и не была зафиксирована или откатана.

Я предлагаю открыть другое окно до истечения времени ожидания второго запроса и выполнить процедуру "sp_who2". В нем есть столбец, который будет точно указывать, блокируется ли запрос другим запросом (он называется «BlkBy»), который выполняется одновременно.

0 голосов
/ 01 апреля 2010

Это было решено. На самом деле, я использовал генератор кода для хранения хранимых процедур и уровня данных, который создавал слой транзакций вокруг всех вызовов базы данных. Однако проблема заключалась в том, что он был нацелен на .NET 3.5, а сервер был настроен на использование .NET 2.0. Это была не проблема базы данных, а проблема несовместимости с версией .NET на сервере.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...