Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Как определить транзакции при которых возникает ошибка в eventlog SQL  [new]
Dmitry_I
Member

Откуда:
Сообщений: 17
Пожалуйста, подскажите, как решить задачу:

1. Есть SQL сервер в евент логе которого несколько раз возникли ошибки и больше пока не появляются (могут разные), например:

автор
Level: 1
Source: MSSQLSERVER
Event ID: 7886
Description: A read operation on a large object failed while sending data to
the client. A common cause for this is if the application is running in READ
UNCOMMITTED isolation level. This connection will be terminated.


Задача - определить какие транзакции выполнялись в это время в БД.

Причем на сервере есть несколько БД.

2. Для каждой БД делается:
Еженедельный полный бэкап
Еждневный дифференциальный бэкап
Ежедневный лог бэкап.

3. Как предполагается решить задачу -
Каким-то образом на другом тестовом сервере "проиграть" транзакции с помощью имеющихся бэкапов и с помощью profiler залоггировать выполняемые в это время транзакции.

Мне подсказали, что log reader and replayer может в этом помочь.
Но, что это такое, я пока не знаю.

Как можно решить задачу?
25 сен 14, 19:30    [16622864]     Ответить | Цитировать Сообщить модератору
 Re: Как определить транзакции при которых возникает ошибка в eventlog SQL  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31444
Dmitry_I
3. Как предполагается решить задачу -
Каким-то образом на другом тестовом сервере "проиграть" транзакции с помощью имеющихся бэкапов и с помощью profiler залоггировать выполняемые в это время транзакции.
Проиграть из бакапов - не слышал о таком.

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

А вообще, нужно отрубать руки программистам, которые глушат ошибки в приложениях :-)
25 сен 14, 20:14    [16622974]     Ответить | Цитировать Сообщить модератору
 Re: Как определить транзакции при которых возникает ошибка в eventlog SQL  [new]
Glory
Member

Откуда:
Сообщений: 104760
Dmitry_I
Задача - определить какие транзакции выполнялись в это время в БД.

Выполняются не транзакции, а команды.
И проблема ваша в том, что какой то коннект пытается читать "грязные" данные.
И делает он это "running in READ UNCOMMITTED isolation level"
25 сен 14, 21:21    [16623098]     Ответить | Цитировать Сообщить модератору
 Re: Как определить транзакции при которых возникает ошибка в eventlog SQL  [new]
Dmitry_I
Member

Откуда:
Сообщений: 17
alexeyvg
А вообще, нужно отрубать руки программистам, которые глушат ошибки в приложениях :-)


Возможно ошибка была в приложении у пользователя, который просто проигнорировал ошибку и повторил выполнение в другое время без ошибок. Централизованной фиксации ошибок нет. В итоге где в коде была ошибка информации нет.

Есть ли конкретные называния утилит по чтению логов?
26 сен 14, 16:20    [16626956]     Ответить | Цитировать Сообщить модератору
 Re: Как определить транзакции при которых возникает ошибка в eventlog SQL  [new]
Glory
Member

Откуда:
Сообщений: 104760
Dmitry_I
Есть ли конкретные называния утилит по чтению логов?

Логов чего ? Команд, которые выполнялись на сервере ?
26 сен 14, 16:22    [16626977]     Ответить | Цитировать Сообщить модератору
 Re: Как определить транзакции при которых возникает ошибка в eventlog SQL  [new]
Dmitry_I
Member

Откуда:
Сообщений: 17
Glory
Dmitry_I
Есть ли конкретные называния утилит по чтению логов?

Логов чего ? Команд, которые выполнялись на сервере ?

Я так понимаю, утилит, которые читают транзакционные логи и показывают какие были транзакции.
26 сен 14, 16:37    [16627103]     Ответить | Цитировать Сообщить модератору
 Re: Как определить транзакции при которых возникает ошибка в eventlog SQL  [new]
Glory
Member

Откуда:
Сообщений: 104760
Dmitry_I
Я так понимаю, утилит, которые читают транзакционные логи и показывают какие были транзакции.

Что вы называете транзакцией ? Команды BEGIN/COMMIT/ROLLBACK TRANSACTION ?


В тексте ошибки ясно сказано "A read operation on a large object failed"
И причина "application is running in READ UNCOMMITTED isolation level"
26 сен 14, 16:42    [16627136]     Ответить | Цитировать Сообщить модератору
 Re: Как определить транзакции при которых возникает ошибка в eventlog SQL  [new]
Dmitry_I
Member

Откуда:
Сообщений: 17
Под транзакцией я подразумеваю набор команд которые выполняются в запросах к серверу.

Которые можно просмотреть например, с помощью какой-нибудь утилиты, и попробовать еще раз проиграть вставив команды в окно запроса.
26 сен 14, 17:21    [16627295]     Ответить | Цитировать Сообщить модератору
 Re: Как определить транзакции при которых возникает ошибка в eventlog SQL  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31444
Dmitry_I
Есть ли конкретные называния утилит по чтению логов?
1) недокументированная DBCC log или ::fn_dblog
http://www.mssqlcity.com/Articles/Undoc/SQL2000UndocDBCC.htm#part_2_8
https://www.sql.ru/forum/9887/kak-prosmotret-zhurnal-tranzakciy

2) lumigent log explorer, щас вроде как то по другому называется

Но непонятно, что это даст, описание ошибки у вас есть. Вы хотите убедится, что сервер вас не обманул? :-)

Dmitry_I
Возможно ошибка была в приложении у пользователя, который просто проигнорировал ошибку и повторил выполнение в другое время без ошибок. Централизованной фиксации ошибок нет. В итоге где в коде была ошибка информации нет.
Надо бы куда то писать лог...
26 сен 14, 18:58    [16627644]     Ответить | Цитировать Сообщить модератору
 Re: Как определить транзакции при которых возникает ошибка в eventlog SQL  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31444
Dmitry_I
Под транзакцией я подразумеваю набор команд которые выполняются в запросах к серверу.

Которые можно просмотреть например, с помощью какой-нибудь утилиты, и попробовать еще раз проиграть вставив команды в окно запроса.
Проигрывание ничего не даст, ошибка редко повторяемая.
26 сен 14, 18:59    [16627651]     Ответить | Цитировать Сообщить модератору
 Re: Как определить транзакции при которых возникает ошибка в eventlog SQL  [new]
Glory
Member

Откуда:
Сообщений: 104760
Dmitry_I
Под транзакцией я подразумеваю набор команд которые выполняются в запросах к серверу.

Которые можно просмотреть например, с помощью какой-нибудь утилиты, и попробовать еще раз проиграть вставив команды в окно запроса.

Еще раз
Ошибка происходит потому, что приложение читает "грязные" данные
26 сен 14, 19:40    [16627759]     Ответить | Цитировать Сообщить модератору
 Re: Как определить транзакции при которых возникает ошибка в eventlog SQL  [new]
Dmitry_I
Member

Откуда:
Сообщений: 17
Ок, спасибо за ответы.
6 окт 14, 15:50    [16666809]     Ответить | Цитировать Сообщить модератору
 Re: Как определить транзакции при которых возникает ошибка в eventlog SQL  [new]
МуМу
Member

Откуда:
Сообщений: 1134
Есть такой продукт Softpoint Traffic Simulator. Позволяет воспроизводить. Но нужно иметь и бэкап БД а также лог снимаемый с помощью этого продукта. Если ошибка очень редко воспроизводится то это не ваш случай.
6 окт 14, 17:59    [16667652]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить