Автономные базы данных

Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure

Содержащаяся база данных — это база данных , изолированная от других баз данных и от экземпляра SQL Server, на котором размещена база данных. SQL Server помогает пользователю изолировать базу данных от экземпляра 4 способами.

  • Большая часть метаданных, описывающих базу данных, ведется в базе данных. (В дополнение или вместо хранения метаданных в базе данных master.)

  • Все метаданные определяются с использованием одних и тех же параметров сортировки.

  • Аутентификация пользователей может выполняться базой данных, уменьшая зависимость баз данных от имен входа экземпляра SQL Server.

  • Среда SQL Server (DMV, XEvents и т. д.) предоставляет сведения об изолированности и может использовать их для выполнения действий.

Некоторые функции частично содержащихся баз данных, такие как хранение метаданных в базе данных, применяются ко всем базам данных SQL Server. Некоторые преимущества частично автономных баз данных, например проверка подлинности на уровне базы данных или сортировка каталогов, необходимо включить, чтобы воспользоваться ими. Частичное автономное хранение включается с помощью инструкций CREATE DATABASE и ALTER DATABASE или с помощью SQL Server Management Studio. Дополнительные сведения о том, как включить частичную автономность базы данных, см. в разделе Миграция на частично автономную базу данных.

Основные понятия частично изолированной базы данных

Полностью автономная база данных включает все параметры и метаданные, необходимые для ее определения, и не имеет зависимостей конфигурации от экземпляра ядра СУБД SQL Server, на котором установлена база данных. В предыдущих версиях SQL Server разделение базы данных из экземпляра SQL Server может занять много времени и требует подробных знаний о связи между базой данных и экземпляром SQL Server. Частично автономные базы данных упрощают отделение базы данных от экземпляра SQL Server и других баз данных.

Автономная база данных учитывает возможности с точки зрения изоляции. Любая определяемая пользователем сущность, использующая только расположенные в базе данных функции, считается полностью автономной. Любая определяемая пользователем сущность, использующая расположенные вне базы данных функции, считается неавтономной. (Дополнительные сведения см. в разделе Изоляция ниже в этой статье.)

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

Граница базы данных
Граница между базой данных и экземпляром SQL Server. Граница между базой данных и другими базами данных.

Содержится
Элемент, существующий полностью в пределах базы данных.

Неизолированный
Элемент, пересекающий границы базы данных.

Неизолированная база данных
База данных, для которой параметр вложенности имеет значение NONE. Все базы данных в версиях до SQL Server 2012 (11.x) не являются автономными. По умолчанию для всех баз данных SQL Server 2012 (11.x) и более поздних версий уровень изоляции установлен в NONE.

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

Изолированный пользователь
Для автономных баз данных имеется два типа пользователей.

  • Пользователь автономной базы данных с паролем

    Проверку подлинности пользователей автономной базы данных с паролями выполняет база данных. Дополнительные сведения см. в статье Пользователи автономной базы данных — создание переносимой базы данных.

  • Субъекты безопасности Windows

    Авторизованные пользователи Windows и члены авторизованных групп Windows могут подключаться непосредственно к базе данных, для них не требуется имя входа в базе данных master . База данных доверяет аутентификации Windows.

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

Внимание

Включение частично изолированных баз данных передаёт владельцам баз данных управление доступом к экземпляру SQL Server. Дополнительные сведения см. в разделе Security Best Practices with Contained Databases.

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

Внутри границы базы данных находится модель базы данных, в которой выполняется разработка баз данных и управление этими базами данных. Примерами сущностей, находящихся внутри модели базы данных, служат такие системные таблицы, как sys.table, пользователи автономной базы данных с паролями, а также пользовательские таблицы в текущей базе данных, ссылаемые по двухкомпонентному имени.

За пределами границы базы данных находится модель управления, которая относится к функциям и управлению на уровне экземпляра. Примерами сущностей, находящихся за границами базы данных, служат такие системные таблицы, как sys.endpoints, пользователи, сопоставленные с именами входа, а также пользовательские таблицы в другой базе данных, ссылаемые по трехкомпонентному имени.

Изоляция

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

Обычно пользовательские сущности подпадают в следующие категории включения.

  • Полностью автономные пользовательские сущности (которые никогда не пересекают границу базы данных), например sys.indexes. Код, использующий эти функции или любые объекты, ссылающиеся только на эти сущности, является полностью автономным.

  • Неавтономные пользовательские сущности (которые пересекают границу базы данных), например sys.server_principals или сам участник на уровне сервера (имя входа). Код, использующий эти сущности или любые функции, ссылающиеся на эти сущности, является неавтономным.

Частично изолированная база данных

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

Используйте представления sys.dm_db_uncontained_entities и sys.sql_modules (Transact-SQL) для получения сведений о несдерживаемых объектах или компонентах. Определив состояние автономности элементов базы данных, вы можете узнать, какие объекты и функции необходимо заменить или изменить для обеспечения автономности.

Внимание

Поскольку для некоторых объектов по умолчанию задан параметр включения NONE, это представление может возвращать ложноположительные результаты.

Поведение частично автономных баз данных наиболее заметно отличается от неавтономных баз данных в отношении сопоставления. Дополнительные сведения о проблемах, связанных с параметрами сортировки, см. в разделе Параметры сортировки в автономной базе данных.

Преимущества использования частично автономных баз данных

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

Перемещение базы данных

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

В частично автономных базах данных важная информация может храниться в базе данных, в результате чего она останется в базе данных и после ее переноса.

Примечание.

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

Преимущества использования пользователей автономной базы данных в решениях AlwaysOn

За счёт уменьшения зависимости от экземпляра SQL Server частично изолированные базы данных могут быть полезны при отработке отказа при использовании групп доступности Always On.

Создание автономных пользователей позволяет им напрямую подключаться к автономной базе данных. Это крайне важная функция в сценариях высокого уровня доступности и восстановления после аварии, например при использовании решения AlwaysOn. Если пользователи являются изолированными, то при отработке отказа они смогут подключиться к вторичной реплике без создания имен входа на экземпляре, размещающем вторичную реплику. Выгода обеспечивается немедленно. Дополнительные сведения см. в разделах Обзор групп доступности AlwaysOn (SQL Server) и Предварительные требования, ограничения и рекомендации для групп доступности AlwaysOn (SQL Server).

Первоначальная разработка баз данных

Поскольку разработчик может не знать, где будет развернута новая база данных, ограничение влияния разворачиваемой среды на базу данных уменьшает трудозатраты и сложности для разработчика. В неавтономной модели разработчик должен учитывать возможное влияние среды на новую базу данных и программировать в соответствии с ним. Однако, используя частично автономные базы данных, разработчики могут выявлять влияние уровня экземпляра на базу данных и проблемы уровня экземпляра, важные для разработчика.

Администрирование базы данных

Хранение параметров базы данных в самой базе данных, а не в базе данных master, позволяет каждому владельцу базы данных иметь больше контроля над своей базой данных без предоставления владельцу базы данных разрешения sysadmin.

Ограничения

Частично изолированные базы данных не поддерживают следующие возможности.

  • Репликация, система отслеживания измененных данных и отслеживание изменений.

  • Нумерованные процедуры

  • Привязанные к схеме объекты, которые зависят от встроенных функций с изменениями параметров сортировки

  • Изменение привязки в результате изменений параметров сортировки, включая ссылки на объекты, столбцы, символы или типы.

Предупреждение

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

Определение автономности базы данных

Есть два средства, помогающих определить состояние изоляции базы данных. sys.dm_db_uncontained_entities (Transact-SQL) — это представление, в котором отображаются все потенциально несвязанные сущности в базе данных. Событие database_uncontained_usage возникает, когда во время выполнения обнаруживается любая фактически неавтономная сущность.

sys.dm_db_uncontained_entities

Это представление содержит все сущности базы данных, которые потенциально могут быть неавтономными, например пересекающие границу базы данных. К ним относятся пользовательские сущности, которые могут использовать объекты вне модели базы данных. Однако, так как включение некоторых сущностей (например, использующих динамический SQL) невозможно определить до времени выполнения, в представлении могут отображаться некоторые сущности, которые фактически не являются неавтономными. Дополнительные сведения см. в разделе sys.dm_db_uncontained_entities (Transact-SQL).

событие database_uncontained_usage

Это событие XEvent возникает всякий раз, когда во время выполнения идентифицируется сущность, не содержащаяся в контейнере. Сюда входят и сущности, созданные в клиентском коде. Это событие XEvent возникает только для сущностей, фактически не содержащихся в контейнере. Однако это событие происходит только во время выполнения. Поэтому любые неизолированные пользовательские сущности, которые вы не запускали, не будут обнаружены этим событием XEvent.

См. также

Изменённые возможности (автономная база данных)
Правила сортировки содержимой базы данных
Рекомендации по защите автономных баз данных
Переход на частично автономную базу данных
Пользователи автономной базы данных: создание переносимой базы данных