(495) 925-0049, ITShop интернет-магазин 229-0436, Учебный Центр 925-0049
  Главная страница Карта сайта Контакты
Поиск
Вход
Регистрация
Рассылки сайта
 
 
 
 
 

Описание обработки тупиковых ситуаций (deadlock) в SQL Server

Источник: SQL Exercises

Тупик - это состояние, когда два (или больше) процесса пытаются обратиться к ресурсу, который заблокирован другим процессом. Поскольку каждый процесс запрашивает ресурс другого процесса, ни один из них не может быть завершен. Когда SQL Server обнаруживает тупик, он откатывает транзакцию, которая имеет наименьшую продолжительность обработки и возвращает в приложение сообщение об ошибке 1205. Сообщение об ошибке 1205 прерывает выполнение текущего пакета и откатывает текущую транзакцию.
Детали

В некоторых случаях состояние тупика будет вызывать команду библиотеки DB-Library (DB-Lib) типа dbsqlexec, dbsqlok или dbresults, чтобы вернуть FAIL (сбой). Программа всегда ответственна за проверку кодов возврата из каждой команды DB-Lib. Если одна из этих команд DB-Lib возвращает FAIL, программа должна отменить выполнение пакета, а не попытаться его продолжить. В некоторых случаях возможно продолжение выполнения последующих команд в пакете. Однако поскольку произошла тупиковая ситуация, и для команды, которая ее вызвала, был выполнен откат, последующие команды в пакете будут, вероятно, вызывать более серьезные ошибки, например, "объект не
В других случаях состояние тупика не будет заставлять команду DB-Lib возвращать FAIL. Чтобы обработать такую ситуацию, программа должна проверить сообщение 1205 в обработчике сообщений и использовать функцию dbsetuserdata, чтобы сообщить об этом вашему приложению (пример может быть найден в Главе 4 "DB-Library Functions" справочника программиста С в пункте dbsetuserdata). Таким образом, программа должна проверять индикатор тупика после каждого вызова DB-Library и отменять выполнение пакета в случае обнаружения тупика.

Хотя может показаться необязательной отмена пакета после получения сообщения о тупике 1205, это необходимо, потому что сервер не всегда прерывает выполнение пакета в тупиковой ситуации. Если выполнение пакета не отменено, любая другая попытка принять новый пакет может привести к ошибке DB-Library 10038 "Results Pending" (задержка результатов).

Вы можете найти описание проблемы тупика и пример того, как обнаружить состояние тупика в Приложении E "Максимизирование согласованности и параллелизма" в "Справочнике программиста C" SQL Server для Windows NT

Применимо к

  • Microsoft SQL Server 4.21a Standard Edition
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 2005 Standard Edition 
  • Microsoft SQL Server 2005 Developer Edition 
  • Microsoft SQL Server 2005 Enterprise Edition 
  • Microsoft SQL Server 2005 Express Edition
  • Microsoft SQL Server 2005 Workgroup Edition

Microsoft Corp (оригинал: Description of handling deadlock conditions in SQL Server)
Перевод: Моисеенко С.И.
Оригинал перевода 



 Распечатать »
 Правила публикации »
  Написать редактору 
 Рекомендовать » Дата публикации: 30.07.2007 
 

Магазин программного обеспечения   WWW.ITSHOP.RU
Microsoft Office 365 для Дома 32-bit/x64. 5 ПК/Mac + 5 Планшетов + 5 Телефонов. Подписка на 1 год.
Microsoft Office 365 Бизнес. Подписка на 1 рабочее место на 1 год
Microsoft 365 Business Basic (corporate)
Microsoft Office 365 Профессиональный Плюс. Подписка на 1 рабочее место на 1 год
Microsoft 365 Business Standard (corporate)
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
Безопасность компьютерных сетей и защита информации
Новости ITShop.ru - ПО, книги, документация, курсы обучения
Программирование на Microsoft Access
CASE-технологии
Новости мира 3D-ускорителей
Проект mic-hard - все об XP - новости, статьи, советы
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
 



    
rambler's top100 Rambler's Top100