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

Область применения: 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. Дополнительные сведения о включении частичной автономности базы данных см. в разделе Migrate to a Partially Contained Database.

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

Полностью автономная база данных включает все параметры и метаданные, необходимые для определения базы данных, и не имеет зависимостей конфигурации от экземпляра 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, это представление может возвращать ложные положительные результаты.

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

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

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

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

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

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

Примечание.

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

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

Уменьшая связи с экземпляром SQL Server, частично содержащиеся базы данных могут быть полезны во время отработки отказа при использовании групп доступности AlwaysOn.

Создание автономных пользователей позволяет им напрямую подключаться к автономной базе данных. Это крайне важная функция в сценариях высокого уровня доступности и восстановления после аварии, например при использовании решения 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.

См. также

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