Поделиться через


Блокирование и разблокирование баз данных (XMLA)

В XML для аналитики (XMLA) для блокировки баз данных и снятия блокировки используются команды Lock и Unlock соответственно. Другие команды XMLA, при необходимости, обычно автоматически блокируют объекты и снимают блокировку во время выполнения команды, чтобы завершить ее. Базы данных можно явно блокировать или снимать с них блокировку для выполнения нескольких команд в рамках одной транзакции, например команды Batch, с тем, чтобы другие приложения не могли зафиксировать транзакцию записи в базу данных.

Блокировка баз данных

Команда Lock блокирует объект для совместного или монопольного использования в контексте текущей активной транзакции. Блокировка объекта не позволяет проводить фиксацию транзакций до снятия блокировки. Службы MicrosoftSQL ServerAnalysis Services поддерживают два типа блокировок: совмещаемые и монопольные. Дополнительные сведения о типах блокировок, поддерживаемых службами Analysis Services, см. в разделе Элемент Mode (XML для аналитики).

Службы Analysis Services позволяют блокировать только базы данных. Элемент Object должен содержать ссылку на базу данных служб Analysis Services. Если элемент Object не указан или если элемент Object ссылается на объект, отличающийся от базы данных, возникает ошибка.

Примечание по безопасностиПримечание по безопасности

Явно выполнять команду Lock могут только администраторы базы данных или администраторы сервера.

Другие команды неявно выполняют команду Lock для базы данных служб Analysis Services. Любая операция по чтению данных или метаданных из базы данных, например любой метод Discover или метод Execute, запускающий команду Statement, неявно устанавливает совмещаемую блокировку на базу данных. Любая транзакция, фиксирующая изменения в данных или метаданных объекта в базе данных служб Analysis Services, например метод Execute, запускающий команду Alter, неявно устанавливает монопольную блокировку на базу данных.

Снятие блокировок с объектов

Команда Unlock снимает блокировку, установленную в контексте транзакции, активной в настоящее время.

Примечание по безопасностиПримечание по безопасности

Только администраторы базы данных или администраторы сервера могут явно выдавать команду Unlock.

Все блокировки удерживаются в контексте текущей транзакции. После фиксации или отката текущей транзакции все блокировки, определенные в рамках транзакции, автоматически снимаются.