Управление Stretch Database и устранение связанных с ней неполадок

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

Важно!

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

Для управления Stretch Database и устранения связанных с ней неполадок используйте средства и методы, описанные в этой статье.

Управление локальными данными

Получение сведений о локальных базах данных и таблицах, для которых можно включить Stretch Database

Откройте представления каталога sys.databases и sys.tables, чтобы просмотреть сведения о базах данных и таблицах SQL Server с поддержкой Stretch. Дополнительные сведения см. в статьях sys.databases (Transact-SQL) и sys.tables (Transact-SQL).

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

USE <Stretch-enabled database name>;
GO
EXEC sp_spaceused '<Stretch-enabled table name>', 'true', 'LOCAL_ONLY';
GO

Управление переносом данных

Проверка функции фильтров, примененной к таблице

Откройте представление sys.remote_data_archive_tables каталога и проверка значение столбцаfilter_predicate, чтобы определить функцию, используемую Stretch Database для выбора строк для переноса. Если значение равно null, то всю таблицу можно перенести. Дополнительные сведения см. в статье sys.remote_data_archive_tables (Transact-SQL) и Выбор строк для миграции с использованием функции фильтров (база данных Stretch).

Проверка состояния переноса данных

Выберите Задачи > Stretch > Мониторинг для базы данных в SQL Server Management Studio, чтобы отслеживать перенос данных в Мониторинге Stretch Database. Дополнительные сведения см. в статье Мониторинг переноса данных и устранение неполадок при этой операции (Stretch Database).

Или откройте динамическое административное представление sys.dm_db_rda_migration_status, чтобы увидеть, сколько пакетов и строк данных были перенесены.

Устранение неполадок переноса данных

Рекомендации по устранению неполадок см. в статье Мониторинг переноса данных и устранение неполадок при этой операции (Stretch Database).

Управление удаленными данными

Получение сведений об удаленных базах данных и таблицах, используемых с Stretch Database

Откройте представления каталога sys.remote_data_archive_databases и sys.remote_data_archive_tables, чтобы просмотреть сведения об удаленных базах данных и таблицах, в которых хранятся перенесенные данные. Дополнительные сведения см. в статьях sys.remote_data_archive_databases (Transact-SQL) и sys.remote_data_archive_tables (Transact-SQL).

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

USE <Stretch-enabled database name>;
GO
EXEC sp_spaceused '<Stretch-enabled table name>', 'true', 'REMOTE_ONLY';
GO

Удаление перенесенных данных

Если вы хотите удалить данные, уже перенесенные в Azure, выполните действия, описанные в статье sys.sp_rda_reconcile_batch.

Управление схемой таблицы

Не изменяйте схему удаленной таблицы

Не изменяйте схему удаленной таблицы Azure, связанной с таблицей SQL Server, которая настроена для использования со Stretch Database. В частности, не следует изменять имя или тип данных столбца. При использовании Stretch Database нужно учитывать некоторые моменты, связанные со схемой удаленной таблицы в отношении схемы таблицы SQL Server. Если вы измените удаленную схему, Stretch Database не будет работать с измененной таблицей.

Согласование столбцов таблицы

Если вы случайно удалили столбцы из удаленной таблицы, выполните команду sp_rda_reconcile_columns , чтобы добавить столбцы в удаленную таблицу, которая существует в таблице SQL Server с поддержкой Stretch, но не в удаленной таблице. Дополнительные сведения см. в статье sys.sp_rda_reconcile_columns.

Важно!

При sp_rda_reconcile_columns повторном создании столбцов, случайно удаленных из удаленной таблицы, он не восстанавливает данные, которые ранее были в удаленных столбцах.

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

Управление производительностью и затратами

Устранение проблем с производительностью запросов

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

  • Сервер Azure находится не в одном географическом регионе с SQL Server? Сервер Azure и SQL Server должны находиться в одном географическом регионе для уменьшения задержек в сети.

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

Повышение уровня производительности Azure для таких ресурсоемких операций, как индексирование

Если при сборке, повторной сборке или реорганизации индекса для большой таблицы, настроенной для Stretch Database, предполагается большое количество запросов к перенесенным данным в Azure, необходимо увеличить уровень производительности соответствующей удаленной базы данных Azure во время выполнения этой операции. Дополнительные сведения об уровнях производительности и ценах см. на странице с ценами на использование SQL Server Stretch Database.

Вы не можете приостановить службу SQL Server Stretch Database в Azure

Проверьте выбранные уровень производительности и цен. В случае временного увеличения производительности для выполнения ресурсоемкой операции не забудьте вернуть ее к прежнему уровню по завершении операции. Дополнительные сведения об уровнях производительности и ценах см. на странице с ценами на использование SQL Server Stretch Database.

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

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

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

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

Изменение области запросов для отдельного запроса со стороны администратора

Чтобы изменить область отдельного запроса, отправляемого членом роли db_owner, добавьте к инструкции SELECT указание запроса WITH ( REMOTE_DATA_ARCHIVE_OVERRIDE = *value* ). Указание запроса REMOTE_DATA_ARCHIVE_OVERRIDE может иметь следующие значения:

  • LOCAL_ONLY. Запрашиваются только локальные данные.

  • REMOTE_ONLY. Запрашиваются только удаленные данные.

  • STAGE_ONLY. Запрос только данных в таблице, где Stretch Database размещает строки, пригодные для миграции, и сохраняет перенесенные строки в течение указанного периода после миграции. Указание запроса — единственный способ запроса промежуточной таблицы.

Например, следующий запрос возвращает только локальные результаты.

USE [<Stretch-enabled database name>];
GO
SELECT *
FROM [<Stretch_enabled table name>]
WITH (REMOTE_DATA_ARCHIVE_OVERRIDE = LOCAL_ONLY)
WHERE someCol = 1 /* sample predicate only, please replace with an appropriate one */;
GO

Выполнение административных обновлений и удалений

По умолчанию обновлять или удалять из таблицы с поддержкой Stretch строки, подходящие для переноса, или уже перенесенные строки нельзя. Если необходимо устранить проблему, член роли db_owner может выполнить операцию UPDATE или DELETE, добавив к инструкции указание запроса WITH ( REMOTE_DATA_ARCHIVE_OVERRIDE = *value* ). Указание запроса REMOTE_DATA_ARCHIVE_OVERRIDE может иметь следующие значения:

  • LOCAL_ONLY. Обновляются или удаляются только локальные данные.

  • REMOTE_ONLY. Обновляются или удаляются только удаленные данные.

  • STAGE_ONLY. Обновление или удаление только данных в таблице, где служба Stretch Database размещает строки, пригодные для миграции, и сохраняет перенесенные строки в течение указанного периода после миграции.

См. также