Доступ к метаданным, уровни изоляции и указания блокировки

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

Внутри системы компонент Компонент SQL Server Database Engine использует для доступа к метаданным только уровень изоляции READ COMMITTED. Если у трансляции есть уровень изоляции, например SERIALIZABLE, а внутри транзакции делается попытка осуществления доступа к метаданным при помощи представления каталога или встроенных функций, создающих метаданные, то эти запросы будут выполняться до завершения выполнения как READ COMMITTED. Однако в изоляции моментальных снимков доступ к метаданным будет запрещен из-за одновременных операций DDL. Это происходит из-за несоответствия версий метаданных. Таким образом, доступ в изоляции моментальных снимков может быть запрещен из-за:

  • представлений каталога;

  • представлений совместимости;

  • представлений информационной схемы;

  • встроенных функций, создающих метаданные;

  • групп хранимых процедур sp_help;

  • Процедуры каталога SQL Server Native Client

  • динамических административных представлений и функций.

Дополнительные сведения об уровнях изоляции см. в разделе SET TRANSACTION ISOLATION LEVEL (Transact-SQL).

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

Уровень изоляции

Поддержка

Соблюдается

READ UNCOMMITTED

Отсутствует

Не гарантируется

READ COMMITTED

Есть

Есть

REPEATABLE READ

Отсутствует

Отсутствует

SNAPSHOT ISOLATION

Отсутствует

Отсутствует

SERIALIZABLE

Отсутствует

Отсутствует