Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
LektsiiNovye.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
2.92 Mб
Скачать

Блокирование и взаимоблокировки

Блокирование (blocking) и взаимоблокировки (deadlock) – это две дополнительные проблемы, которые могут возникать при одновременно выполняемых транзакциях. Они могут приводить к серьезным проблемам системы, а также могут замедлять и даже останавливать работу. Эти проблемы могут разрешаться в приложении, или SQL Server постарается сделать всё возможное для их разрешения. Обход и разрешение проблем блокирования и взаимоблокировки являются обязанностью программиста.

Блокирование возникает в том случае, когда одна транзакция владеет блокировкой по какому-либо ресурсу, а второй транзакции требуется конфликтный тип блокировки по этому ресурсу. Вторая транзакция должна ждать, пока первая транзакция освободит свою блокировку; иными словами, она блокирована первой транзакцией. Проблема блокирования обычно возникает, когда какая-либо транзакция захватывает блокировку на длительный период времени, что приводит к цепочке блокированных транзакций, ожидающих окончания других транзакций, чтобы получить необходимые им блокировки; это состояние называют цепным блокированием. На рис. 11.1 показан пример цепного блокирования.

рис. 11.1. Цепное блокирование

Взаимоблокировка отличается от блокированной транзакции тем, что взаимоблокировка возникает в случае двух блокированных транзакций, ожидающих друг друга. Например, предположим, что одна транзакция владеет монопольной блокировкой по Таблице 1, а вторая владеет монопольной блокировкой по Таблице 2. Прежде чем будет освобождена любая монопольная блокировка, первой транзакции требуется блокировка по Таблице 2 и второй транзакции – требуется блокировка по Таблице 1. Теперь каждая транзакция ждёт, пока другая транзакция освободит свою монопольную блокировку, но ни одна из транзакций не сделает этого, пока не будет выполнено фиксирование или откат для завершения соответствующей транзакции. Ни одна из транзакций не может завершиться, поскольку для продолжения работы ей требуется блокировка, которой владеет другая транзакция, – ситуация взаимоблокировки! Этот сценарий показан на рис. 11.2. При возникновении взаимоблокировки SQL Server прекращает одну из транзакций, и её требуется запустить заново.

рис. 11.2. Взаимоблокировка

Лекция 12: Управление пользователями и системой безопасности

Все версии SQL Server, начиная с SQL Server 2005 были разработаны в рамках инициативы Microsoft Trustworthy Computing (защищённые информационные системы). Один из принципов этой инициативы – Security by Default (безопасность по умолчанию). Реализуя этот принцип, SQL Server по умолчанию отключает некоторые сетевые настройки, чтобы сохранить максимально возможный уровень безопасности среды SQL Server.

Разрешение удалённого доступа

SQL Server – это система управления базами данных, которая должна работать на сервере сети, принимая подключения от удалённых пользователей и приложений. Можно подключиться к SQL Server локально, с того же компьютера, на котором выполняется SQL Server, но в производственных системах баз данных, как правило, эта возможность не используется. Следовательно, очень важно правильно сконфигурировать SQL Server для приёма защищённых подключений от удалённых компьютеров.

Чтобы выполнить удалённый доступ к экземпляру SQL Server, необходим сетевой протокол для установления соединения. Во избежание расточительного использования системных ресурсов, следует активизировать только те протоколы, которые будут использоваться.

При установке SQL Server с параметрами по умолчанию многие функции отключены, чтобы уменьшить уязвимость системы базы данных против атак. Например, в SQL Server 2005 по умолчанию не разрешаются удалённые подключения (за исключением версии Enterprise), поэтому для того, чтобы задействовать удалённые подключения, следует воспользоваться инструментом «Настройка контактной зоны SQL Server» (SQL Server Surface Area Configuration), как показано на рис. 12.1.

рис. 12.1.  Инструмент Настройка контактной зоны SQL Server для служб и подключений

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]