ALTER FEDERATION (база данных SQL Azure)

Изменение распространения данных в пределах федерации в База данных SQL Azure.

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

Текущая реализация федераций будет выведена из эксплуатации на уровнях служб Web и Business. Для обеспечения максимальной масштабируемости, гибкости и производительности рассмотрите возможность реализации нестандартных решений для сегментирования.Дополнительные сведения о нестандартном сегментировании см. в разделе Масштабирование баз данных SQL Azure.

Syntax Conventions (SQL Database)

Применимо для следующих объектов: База данных SQL Azure.

Синтаксис

ALTER FEDERATION federation_name
{
    SPLIT AT (distribution_name = boundary_value)
    | DROP AT ([LOW | HIGH] distribution_name = boundary_value)
    | SWITCH OUT AT ([LOW | HIGH] distribution_name = boundary_value)
}[;]

Аргументы

  • federation_name
    Имя федерации, подлежащей изменению. Имя должно быть уникальным на данном экземпляре компонента База данных SQL, должно соответствовать правилам для идентификаторов и должно быть тип sysname.

  • distribution_name
    Имя ключа федерации. Имя — это идентификатор, используемый для ссылки на ключ федерации. Оно применяется с инструкциями, связанными с федерацией, например CREATE TABLE… FEDERATED ON(...) или USE FEDERATION. Имена Distribution_name должны соответствовать правилам для идентификаторов и должны быть типа sysname.

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

  • SPLIT AT (distribution_name = boundary_value)
    Перемещает данные из члена федерации, который в настоящий момент содержит граничное значение, в два новых члена федерации. Все строки в федеративных таблицах, значение ключей федерации которых меньше boundary_value, копируются в один из двух новых членов федерации. Экземпляры, значение которых больше или равно boundary_value, копируются в другой новый член федерации. Все другие объекты, например ссылочные таблицы, хранимые процедуры, функции, пользователи и разрешения, определенные для объектов, клонируются в новые члены федерации.

  • DROP AT ([LOW | HIGH] distribution_name = boundary_value)
    Удаляет члена федерации и увеличивает диапазон смежного члена федерации для охвата зазора, созданного операцией DROP. Эта операция влияет на удаляемого члена федерации и на смежного члена федерации, который будет расширен для охвата разрыва. Параметры LOW или HIGH определяют члена федерации, который будет удален из федерации на основе граничного значения boundary_value. Граничное значение должно соответствовать существующему значению секции в федерации (range-high или range-low членов федерации).

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

    Операция DROP AT является асинхронной операцией.

  • SWITCH OUT AT ([LOW | HIGH] distribution_name = boundary_value)
    Удаляет все метаданные федерации и ограничения из базы данных элементов федерации. После выполнения элемент федерации становится автономной базой данных. Во время SWITCH OUT невозможно ни удаление данных, ни перемещение данных. Значения LOW или HIGH определяют элемент федерации, который будет выключен на соответствующей стороне заданной федерации boundary_value. Граничное значение должно соответствовать существующему значению секции в федерации (range-high или range-low членов федерации). В отличие от DROP AT значение SWITCH OUT не расширяет диапазон смежных элементов федерации, чтобы охватить промежуток, созданный операцией. Если вы хотите переместить приложение федерации в переменное состояние База данных SQL Azure, перед выполнением команды убедитесь, что сначала создали общее сопоставление.

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

    Команда SWITCH OUT является постоянной.После выполнения элемент будет недоступен с помощью выражения USING FEDERATION, и базу данных будет невозможно добавить обратно в исходную федерацию.Во время выполнения этой команды отсутствует влияние на другие элементы федерации.

Замечания

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

Свойства операции SPLIT

  • Инструкция ALTER FEDERATION … SPLIT должна быть единственной инструкцией в пакете и не может быть частью внешней транзакции.

  • Инструкцию ALTER FEDERATION … SPLIT можно выполнить только после подключения к корневой базе данных федерации.

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

  • Все конечные члены федерации (созданные после операции SPLIT) наследуют свойства MAXSIZE и EDITION исходного члена федерации.

  • SPLIT является атомарной операцией. Для завершения операции SPLIT все конечные члены должны быть успешно созданы и синхронизированы.

  • SPLIT является асинхронной операцией.

    Во время выполнения операции SPLIT

    • Все регулярные (нефедеративные) объекты, схемы и системные метаданные копируются из исходного разделяемого члена федерации в конечный член федерации. В этот список входят пользователи, роли и разрешения для объектов, хранимые процедуры, представления, федеративные и ссылочные таблицы, индексы и т. д. Единственное исключение — статистика распределения, которая отмечена для повторного вычисления. Статистика, отмеченная как NORECOMPUTE, сохраняется и не вычисляется заново в федеративных таблицах после операции повторного секционирования.

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

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

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

    После завершения операции SPLIT

    • Новый член федерации содержит все последние данные соответствующих конечных членов федерации.

    • В представление sys.federation_members добавляются новые члены федерации с их значениями диапазона. Исходный член федерации удаляется и больше не существует в представлениях sys.databases и в sys.federation_members.

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

Свойства операции DROP

  • Инструкция ALTER FEDERATION … DROP должна быть единственной инструкцией в пакете и не может быть частью внешней транзакции.

  • Инструкцию ALTER FEDERATION … DROP можно выполнить только после подключения к корневой базе данных федерации.

  • Граничное значение должно соответствовать существующей границе диапазона (range_high, range_low) в федерации.

  • Операция DROP является асинхронной.

    В момент начала операции DROP параметр LOW или HIGH указанного граничного значения определяет члена федерации, который будет удален. Смежный член федерации расширяется для охвата диапазона удаленного члена федерации.

    Во время выполнения операции DROP передача данных и сравнение схем не происходят.

    После завершения операции DROP

    • Оставшийся член федерации переименовывается.

    • Таблица sys.federation_members больше не содержит удаленного члена федерации, а ее диапазон обновляется для оставшегося члена федерации.

    • Все существующие подключения к членам федерации обрываются. Удаленный член федерации больше не принимает соединения. Оставшийся член федерации обрывает все существующие соединения.

Свойства операции SWITCH OUT

  • Операция SWITCH OUT должна быть единственной инструкцией в пакете и не может быть частью внешней транзакции.

  • Операцию SWITCH OUT можно выполнить только после подключения к корневой базе данных федерации.

  • SWITCH OUT является асинхронной операцией.

  • Новые подключения к элементу федерации будут заблокированы до завершения операции.

  • После завершения операции SWITCH OUT:

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

    • Все существующие подключения к членам федерации обрываются. Элемент федерации SWITCH OUT больше не будет принимать подключения через команду USING FEDERATION.

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

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

Разрешения

Для выполнения операций CREATE, ALTER и DROP с федерацией необходимо подключиться к корню федерации и быть членом роли dbmanager на сервере. Вы также должны быть членом группы dbo для базы данных.

Инструкции SPLIT и DROP требуется наличие разрешений CREATE и DROP DATABASE в исходных членах федерации и на сервере, к которому вы подключены. В База данных SQL Azure это ограничено членами роли сервера dbmanager. Владелец исходного члена федерации становится владельцем конечного члена федерации назначения независимо от учетной записи пользователя, выполняющего операцию.

Примеры

В следующем примере для выключения элемента федерации, содержащего ключ федерации 99, который находится на нижней границе значения 100, используется операция SWITCH OUT.

ALTER FEDERATION CustomerFederation SWITCH OUT AT (LOW cid = 100)

В следующем примере для выключения одного элемента федерации на высокой границе значения уникального идентификатора 00000000-0000-0000-0000-000000000000 используется операция SWITCH OUT.

ALTER FEDERATION CustomerFederation SWITCH OUT AT (HIGH cid = '00000000-0000-0000-0000-000000000000')
  • DROP AT (LOW distribution_name = boundary_value)

    Удаляет члена федерации до граничного значения LOW и расширяет члена федерации до граничного значения HIGH. Например, если федерация (fed1) содержит три члена федерации, охватывающие диапазон 0,100 (db1), 100,200 (db2) и 200,300 (db3), выполнение инструкции ALTER FEDERATION fed1 DROP AT (LOW customer_id=200) приведет к следующему:

    1. применение операции DROP к db2 и всем данным между 100,200;

    2. переименование db3 в db4; DBID Db4 не меняется;

    3. теперь Db4 охватывает диапазон 100,300.

  • DROP AT (HIGH distribution_name = boundary_value)

    Удаляет члена федерации до граничного значения HIGH и расширяет члена федерации до граничного значения LOW. Например, если федерация (fed1) содержит три члена федерации, охватывающие диапазон 0,100 (db1), 100,200 (db2) и 200,300 (db3), выполнение инструкции ALTER FEDERATION fed1 DROP AT (HIGH customer_id=200) приведет к следующему:

    1. применение операции DROP к db3 и всем данным между 200,300;

    2. переименование db2 в db4; DBID Db4 остается таким же, как у db2;

    3. теперь Db4 охватывает диапазон 100,300.

См. также

Другие ресурсы

Управление федерациями баз данных