Настройка базы данных Stretch для таблицы

Область применения: SQL Server 2016 (13.x) и более поздних версий — только Windows

Внимание

Stretch Database устарел в SQL Server 2022 (16.x) и База данных SQL Azure. Эта функция будет удалена в будущей версии ядро СУБД. Избегайте использования этого компонента в новых разработках и запланируйте изменение существующих приложений, в которых он применяется.

Чтобы настроить таблицу так, чтобы она использовала Stretch Database, выберите Stretch > Включить для таблицы в SQL Server Management Studio. После этого откроется мастер включения Stretch для таблицы. Stretch Database для таблицы можно включить также с помощью Transact-SQL. Либо можно создать новую таблицу, уже настроенную для Stretch Database.

Внимание

Поддержка Stretch Database удалена в SQL Server Management Studio версии 19. Для управления Stretch Database можно использовать SQL Server Management Studio версии 18.9.1 или более ранней версии.

  • Если холодные данные хранятся в отдельной таблице, эту таблицу можно перенести полностью.

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

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

Разрешения. Чтобы настроить Stretch Database для таблицы или базы данных, требуются права db_owner. Для включения Stretch Database для таблицы также требуются разрешения ALTER для таблицы.

Примечание.

В случае последующего отключения Stretch Database для таблицы или базы данных помните, что такое отключение не приводит к удалению дистанционного объекта. Если вы хотите удалить удаленную таблицу или базу данных, это нужно сделать с помощью портала управления Azure. Пока удаленные объекты не будут удалены вручную, их хранение будет сопровождаться затратами в Azure.

Использование мастера

1. Запуск мастера

  1. В среде SQL Server Management Studio в обозревателе объектов выберите таблицу, для которой нужно включить перенос.

  2. Щелкните таблицу правой кнопкой мыши и выберите Stretch > Включить, чтобы запустить мастер.

2. Введение

Изучите информацию о назначении мастера и предварительные требования.

3. Выбор таблиц из базы данных

Убедитесь, что выбрана нужная таблица.

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

  • Закройте мастер и выполните инструкцию ALTER TABLE, чтобы включить растяжение для таблицы и указать функцию фильтров.

  • Выполните инструкцию ALTER TABLE, чтобы указать функцию фильтров после выхода из мастера. Необходимые пошаговые инструкции см. в статье Добавление функции фильтров после запуска мастера.

Синтаксис ALTER TABLE описан далее в этой статье.

4. Сводка

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

5. Результаты

Проверка результатов.

Использование Transact-SQL

Вы можете включить Stretch Database для существующей таблицы или создать новую таблицу с поддержкой Stretch Database с помощью Transact-SQL.

Параметры

При выполнении CREATE TABLE или ALTER TABLE для включения Stretch Database для таблицы используйте следующие параметры.

  • Если в таблице содержатся горячие и холодные данные, можно использовать предложение FILTER_PREDICATE = <function> , чтобы задать функцию для выбора переносимых строк. Этот предикат должен вызывать встроенную функцию с табличным значением. Дополнительные сведения см. в разделе Выбор строк для миграции с использованием функции фильтров. Если функция фильтров не указана, переносится вся таблица.

    Внимание

    Если указать плохо оптимизированную функцию фильтров, перенос данных будет выполняться медленно. База данных Stretch применяет функцию фильтров к таблице с помощью оператора CROSS APPLY.

  • Укажите MIGRATION_STATE = OUTBOUND, чтобы немедленно запустить перенос данных, либо MIGRATION_STATE = PAUSED, чтобы отложить его.

Включение Stretch Database для существующей таблицы

Чтобы настроить существующую таблицу для использования со службой Stretch Database, выполните инструкцию ALTER TABLE.

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

USE [<Stretch-enabled database name>];
GO
ALTER TABLE [<table name>]
    SET ( REMOTE_DATA_ARCHIVE = ON ( MIGRATION_STATE = OUTBOUND ) );
GO

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

USE [<Stretch-enabled database name>];
GO
ALTER TABLE [<table name>]
    SET ( REMOTE_DATA_ARCHIVE = ON (
        FILTER_PREDICATE = dbo.fn_stretchpredicate(),
        MIGRATION_STATE = PAUSED ) );
GO

Дополнительные сведения см. в статье ALTER TABLE (Transact-SQL).

Создание новой таблицы с поддержкой Stretch Database

Чтобы создать новую таблицу с поддержкой Stretch Database, выполните команду CREATE TABLE.

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

USE [<Stretch-enabled database name>];
GO
CREATE TABLE [<table name>]
    (
        col1 int
        /* replace the sample "col1" column shown above, with the actual list of columns */
    )
    WITH ( REMOTE_DATA_ARCHIVE = ON ( MIGRATION_STATE = OUTBOUND ) );
GO

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

USE [<Stretch-enabled database name>];
GO
CREATE TABLE [<table name>]
    (
        col1 int
        /* replace the sample "col1" column shown above, with the actual list of columns */
    )
    WITH ( REMOTE_DATA_ARCHIVE = ON (
        FILTER_PREDICATE = dbo.fn_stretchpredicate(),
        MIGRATION_STATE = PAUSED ) );
GO

Дополнительные сведения см. в статье CREATE TABLE (Transact-SQL).

См. также