Шпаргалка по deadlock в MSSQL

Включить трассировку

DBCC TRACEON (1222,-1)

-1 = сбор информации изо всех сессий.

Проверить трассировку

DBCC TRACESTATUS (-1)

или

DBCC TRACEON(1204)
DBCC TRACEON(3604)
DBCC TRACEON(3605)

логи о дедлоках будут писаться в errorlog сервера

Рекомендации:

1.Перед включением трассировки настроить сохранение логов сервера, скажем, не 6, а 24 и более. Это делается в EM, Management / SQL Server logs / Right mouse click / Configure / [X] Limit… Maximem number of поставить, скажем, в 30.

2.Настроить на планировщике ежедневный вызов sp_cycle_errorlog – эта процедура вызывает сброс текущего лога.

После того, как будут пойманы 1 – 2 – 3 дедлока выключить трассировку:

DBCC TRACEOFF(1204)
DBCC TRACEOFF(3604)
DBCC TRACEOFF(3605)

Вот краткий перечень флагов, которые могут пригодиться при отлове взаимоблокировок:

  • 1204 – сбор расширенной информации о взаимоблокировке.
  • 3605 – выдача информации в EventLog.
  • 3406 – выдача информации в файл errorlog.
  • 1206 – сбор информации не только о блокировках, участвующих во тупиковой ситуации (что делает флаг 1204), но и об остальных блокировках, наложенных заблокированными транзакциями.
  • 1200 – сбор информации о порядке наложения блокировок (недокументированный).

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

1. Запустить SQL Profiler, специальную программу для отслеживания работы сервера, и настроить в ней перехват ошибок (event class Errors and Warnings: Exception and Error Log), а затем выставить флаг трассировки 3605. В этом случае вся дополнительная информация о работе SQL-сервера будет сбрасываться в Event Log и перехватываться профайлером, где ее в последствии можно будет посмотреть.
2. Выставить флаг отладки 3406. В этом случае вся дополнительная информация будет сбрасываться в файл errorlog, который по умолчанию находится в каталоге LOG директории SQL сервера.

PAG: 7:1:845557
DBCC PAGE ({dbid | dbname}, filenum, pagenum[, printopt]) в результатах вывода которой можно увидеть object_id (а по нему уже и мя объекта получить)

Полезные ссылки

http://www.sql.ru/articles/mssql/2007/011005DeadlockTroubleshootingPart1.shtml
http://rsdn.ru/article/db/deadlocks.xml

Рекомендуем почитать
Аттачим MSSQL базу используя TSQL

USE [master] GO CREATE DATABASE [my_database] ON ( FILENAME = N'E:\DB\my_database.mdf' ), ( FILENAME = N'E:\DB\my_database.ldf' ) FOR ATTACH GO

TeamCity и MSSQL DB Project без установки Visual Studio

Возникла необходимость на build сервере с Teamcity собирать DBProject. Если у вас нет желания устанавливать Visual Studio и SSDT Tools Читать дальше...

Пишем логи IIS в MSSQL

Цель: организовать хранилище логов IIS под управлением MSSQL. Условия: Для удобного поиска (SELECT'а) по времени значение date и time должны Читать дальше...

Сборки Microsoft SQL Server

Понадобилось мне недавно обновить SQL Server до определенной версии для того, чтобы бэкапы подошли. В противном случае если файл bak Читать дальше...

Поделиться

8 комментариев к “Шпаргалка по deadlock в MSSQL

  1. Hello there, I found your site by means of Google at the same time as searching
    for a related matter, your web site got here up, it appears to
    be like great. I have bookmarked it in my google bookmarks.

    Hello there, just become alert to your blog through Google, and found that it is truly informative.

    I am gonna watch out for brussels. I will appreciate when you proceed this in future.

    Many other folks will likely be benefited from your writing.
    Cheers!

  2. First of all I want to say great blog! I had a quick question in which I’d like to ask if you
    do not mind. I was interested to find out how you center yourself and clear your head prior to writing.
    I’ve had a tough time clearing my thoughts in getting my ideas out
    there. I do enjoy writing but it just seems like the first 10 to 15 minutes
    are generally wasted simply just trying to figure out how to begin. Any recommendations or hints?

    Appreciate it!

  3. Hello there! This article couldn’t be written any better!
    Looking through this article reminds me of my previous roommate!

    He continually kept talking about this.
    I am going to forward this article to him. Pretty sure he’s going to have a great
    read. I appreciate you for sharing!

  4. Hey! I understand this is kind of off-topic but I needed
    to ask. Does building a well-established blog such as yours
    take a massive amount work? I am completely new to operating a blog but I
    do write in my journal everyday. I’d like to start a blog so I can share my own experience and feelings online.
    Please let me know if you have any kind of suggestions or tips for new
    aspiring bloggers. Thankyou!

  5. Greate pieces. Keep posting such kind of information on your blog.
    Im really impressed by it.
    Hello there, You have done an incredible job.
    I’ll definitely digg it and personally suggest to my friends.
    I’m confident they’ll be benefited from this site.

Оставить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *