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

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

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

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

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

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

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

Эта тема описана в следующих разделах.

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

  • Компоненты частично автономной базы данных

  • Включение

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

  • Ограничения

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

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

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

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

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

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

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

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

  • Неавтономная база данных
    База данных с параметром автономности, установленным в значение NONE. Все базы данных, имеющие версии, предшествующие SQL Server 2012, являются неавтономными. По умолчанию у всех баз данных в SQL Server 2012 параметр автономности установлен в значение NONE.

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

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

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

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

    • Участники Windows

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

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

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

    Включение частично автономных баз данных передает управление над доступом к экземпляру SQL Server владельцам базы данных. Дополнительные сведения см. в разделе Рекомендации по обеспечению безопасности автономных баз данных.

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

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

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

Включение

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

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

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

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

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

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

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

Важное примечаниеВажно!

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

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

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

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

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

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

См. также

Измененные функции (автономная база данных)

Параметры сортировки автономной базы данных

Рекомендации по обеспечению безопасности автономных баз данных

Миграция на частично автономную базу данных