Зачем обновлять операцию удаления блока транзакции в базе данных sql-сервера с изоляцией снимка? - PullRequest
0 голосов
/ 14 марта 2012

У меня есть 2 таблицы в моей базе данных.Это Предмет и Поле.Item - это таблица с собственной ссылкой для реализации дерева.Это означает, что в таблице Item у меня есть столбцы ID и ParentId.Таким образом, мы можем хранить дерево в таблице Item.Поле - это таблица для хранения других расширенных свойств для элемента.Таблица полей имеет столбец с именем «Item_ID» для ссылки на таблицу элементов.

ОК, теперь мы просто хотим добавить транзакцию к операции базы данных.Мы нашли странное поведение в качестве заголовка.

По просьбе Microsoft, мы запускаем следующий sql, чтобы включить изоляцию моментальных снимков нашей базы данных:

ALTER DATABASE AdventureWorks2008R2
SET READ_COMMITTED_SNAPSHOT ON;

ALTER DATABASE AdventureWorks2008R2
SET ALLOW_SNAPSHOT_ISOLATION ON;

И затем мы выполняем следующий тест:

  1. Открыть 2 тестовые программы

  2. Первое обновление программы 1 и заблокировать ее перед фиксацией транзакции.

  3. Используйте вторую программу, чтобы попытаться удалить Элемент 2. Элемент 1 не имеет отношения к Элементу 2. Это означает, что Элемент 1 не является родителем / дочерним элементом для Элемента 2.

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

Мне странно от этого результата.Потому что я думаю, что могу удалить пункт 2, даже если пункт 1 находится в транзакции.Кто знает, почему это происходит?

1 Ответ

0 голосов
/ 17 июля 2013

Звучит так, как будто вы вообще не получаете SNAPSHOT ISOLATION (поскольку столкновение обновлений / удалений должно привести к сбою, а не к окончательному завершению).

Вы буквально не выполняли ALTER DATABASE AdventureWorks2008R2... - не так ли?

Поскольку "AdventureWorks2008R2" необходимо заменить именем вашей базы данных ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...