2013-09-11 1 views
0

У меня есть оператор SQL, который обновляет записи в таблице, если запрос возвращает какие-либо записи. Запрос только возвращает записи, если они нуждаются в обновлении. Когда я запускаю выбор в запросе, я не получаю никаких записей, поэтому при запуске обновления не должно быть обновленных записей.Обновление сервера sql влияет на 0 записей, но заполняет журнал транзакций

Проблема, с которой я столкнулся, заключается в том, что запрос в хранимой процедуре не завершится, потому что журнал транзакций заполняется до завершения запроса. Сейчас я не беспокоюсь о заполнении журнала транзакций.

Мой вопрос в том, что если обновления не обновляются, то почему что-либо записывается в журнал транзакций?

+1

Есть ли триггер 'UPDATE' на столе? –

+1

Какая ошибка вы получаете? Вы уверены, что заполняет журнал транзакций, а не tempdb? – UnhandledExcepSean

+1

Какие операции заполняют журнал? В частности, какие операции 'LOP_XXX' появляются при запросе с помощью' SELECT ... FROM fn_dblog (...) '? –

ответ

0

Нам нужно больше информации, прежде чем эта проблема может быть решена ...

Рем имеет большую идею, чтобы посмотреть на записи в лог-файле.

Выполнение DBCC SQLPERF (logspace) даст вам полный файл журнала.

Очистить файл журнала, используя резервную копию журнала транзакций. Это предполагает, что модель восстановления FULL и ПОЛНАЯ резервная копия выполнена.

Повторно запустите хранимую процедуру обновления. Посмотрите записи файла журнала транзакций.

Копия описаний хранимых процедур и таблиц будет отличной. Поиск других процессов (sp_who2) во время выполнения, который может заполнить журнал, - еще одно хорошее место для поиска.

Любые триггеры, которые могут вызывать обновления, удаления или вставки, могут добавить размер файла журнала, предложенный Мартином.

Удачи.

+0

Похоже, проблема была в соединении. Это была тира, чтобы объединить столько записей, которые tempdb заполнял до такой степени, что на диске больше не было места. – RUEMACHINE

0

Похоже, что проблема была в соединении. Это была тира, чтобы объединить столько записей, которые tempdb заполнял до такой степени, что на диске больше не было места.