Поделиться через


Копирование транзакционно согласованной копии базы данных в SQL Azure

Применимо к: База данных SQL Azure

База данных SQL Azure предоставляет несколько методов для создания копии существующей базы данных на том же, или на другом сервере. Вы можете скопировать базу данных с помощью портал Azure, PowerShell, Azure CLI или Transact-SQL.

Примечание.

Идентификатор Microsoft Entra ранее был известен как Azure Active Directory (Azure AD).

Обзор

Копия базы данных — это транзакционно согласованный моментальный снимок исходной базы данных в момент начала запроса на копирование. Для копии можно выбрать один и тот же или другой сервер. Кроме того, вы можете сохранить избыточность резервного копирования и размер вычислительных ресурсов исходной базы данных или использовать другой объем избыточности хранилища резервных копий и (или) вычислительных ресурсов на одном уровне служб. Кроме того, можно скопировать базу данных на уровне служб "Стандартный" или "Общего назначения" и базу данных уровня "Премиум" на уровень "Премиум" или "критически важный для бизнеса".

После завершения копирования новая база данных является полностью функциональной и независимой базой данных в исходной базе данных. Управление именами для входа, пользователями и разрешениями в скопированной базе данных осуществляется независимо от базы данных-источника. Копия создается с помощью технологии георепликации. После завершения заполнения реплик связь георепликации автоматически прекращается. Все требования для использования георепликации применяются к операции копирования базы данных. Дополнительные сведения см. в разделе Общие сведения об активной георепликации.

Примечание.

Портал Azure, PowerShell и Azure CLI не поддерживают копирование базы данных в другую подписку.

Копирование базы данных для баз данных с гипермасштабированием

Для баз данных на уровне служб Гипермасштабирования целевая база данных определяет, является ли копия быстрой копией или копией данных:

  • Быстрая копия: когда копирование выполняется в том же регионе, что и источник, копия создается из моментальных снимков больших двоичных объектов, эта копия является быстрой операцией независимо от размера базы данных.

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

Имена входа в копии базы данных

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

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

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

Если для доступа к данным и копирования базы данных на другой сервер используются имена для входа на уровне сервера, то доступ на основе имени для входа может не работать. Это может произойти, так как имена входа не существуют на целевом сервере или так как эти пароли и идентификаторы безопасности (SID) отличаются. Дополнительные сведения об управлении именами входа при копировании базы данных на другой сервер см. в статье "Управление безопасностью База данных SQL Azure после аварийного восстановления". После успешного завершения копирования на другой сервер и до того, как другие пользователи будут восстановлены, только имя входа, связанное с владельцем базы данных, или администратор сервера могут войти в скопированную базу данных. Чтобы разрешить имена входа и установить доступ к данным после завершения операции копирования, смотрите Разрешение имен входа.

Копирование с помощью портала Azure

Чтобы скопировать базу данных с помощью портал Azure, откройте страницу базы данных, а затем нажмите кнопку "Копировать", чтобы открыть страницу "Создать База данных SQL- Копировать базу данных". Введите значения целевого сервера, в который нужно скопировать базу данных.

Снимок экрана: портал Azure с выделенным параметром копирования базы данных на странице обзора базы данных.

Копирование базы данных

Базу данных можно скопировать с помощью PowerShell, Azure CLI и Transact-SQL (T-SQL).

Для PowerShell используйте командлет New-AzSqlDatabaseCopy.

Внимание

Модуль PowerShell Azure Resource Manager по-прежнему поддерживается базой данных SQL Azure, но вся будущая разработка сосредоточена на модуле Az.Sql. Исправления ошибок для модуля AzureRM будут продолжать выпускаться как минимум до декабря 2020 г. Аргументы команд в модулях Az и AzureRm практически идентичны. Дополнительные сведения о совместимости см. в статье Знакомство с новым модулем Az для Azure PowerShell.

New-AzSqlDatabaseCopy -ResourceGroupName "<resourceGroup>" -ServerName $sourceserver -DatabaseName "<databaseName>" `
    -CopyResourceGroupName "myResourceGroup" -CopyServerName $targetserver -CopyDatabaseName "CopyOfMySampleDatabase"

Копирование базы данных является асинхронной операцией, но целевая база данных создается сразу после принятия запроса. Если необходимо отменить операцию копирования во время выполнения, удалите целевую базу данных с помощью командлета Remove-AzSqlDatabase .

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

Мониторинг хода выполнения операции копирования

Следить за ходом процесса копирования можно путем запроса к представлениям sys.databases, sys.dm_database_copies и sys.dm_operation_status. Пока выполняется копирование, state_desc для новой базы данных задан COPYINGстолбец sys.databases представления.

  • Если копирование завершается ошибкой, state_desc для новой базы данных задан SUSPECTстолбец sys.databases представления. Выполните инструкцию DROP для новой базы данных и повторите попытку позднее.
  • Если копирование выполнено успешно, state_desc для новой базы данных задан ONLINEстолбец sys.databases представления. Это означает, что копирование завершено и новая база данных является обычной базой данных, которую можно изменять независимо от исходной.

Примечание.

Если вы решите отменить копирование во время его выполнения, выполните инструкцию DROP DATABASE в новой базе данных.

Внимание

Если необходимо создать копию с значительно меньшей целью службы, чем источник, целевая база данных может не иметь достаточных ресурсов для завершения процесса заполнения и может привести к сбою операции копирования. В этом сценарии для создания копии на другом сервере и (или) другом регионе используется запрос географического восстановления. Дополнительные сведения см. в статье "Восстановление База данных SQL Azure с помощью резервных копий базы данных".

Разрешения

Чтобы создать копию базы данных, необходимо иметь следующие роли:

  • владельца подписки или
  • Роль участника SQL Server или
  • Настраиваемая роль на исходном сервере со следующими разрешениями:
    • Microsoft.Sql/servers/databases/read
    • Microsoft.Sql/servers/database/write и
  • Настраиваемая роль на целевом сервере со следующими разрешениями:
    • Microsoft.Sql/servers/read
    • Microsoft.Sql/servers/databases/read
    • Microsoft.Sql/servers/databases/write

Чтобы отменить копию базы данных, необходимо иметь следующие роли:

  • владельца подписки или
  • Роль участника SQL Server или
  • Пользовательская роль в целевой базе данных с следующим разрешением:
    • Microsoft.Sql/servers/databases/delete

Для управления копированием базы данных с помощью портал Azure также требуются следующие разрешения:

  • Microsoft.Resources/subscriptions/resources/read
  • Microsoft.Resources/deployments/read
  • Microsoft.Resources/deployments/write
  • Microsoft.Resources/deployments/operationstatuses/read

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

  • Microsoft.Resources/subscriptions/resourcegroups/deployments/operations/read
  • Microsoft.Resources/subscriptions/resourcegroups/deployments/operationstatuses/read

Разрешение имен для входа

После того как новая база данных на целевом сервере будет в сети, сопоставьте пользователей из новой базы данных с именами входа на целевом сервере с помощью оператора ALTER USER. Сведения о разрешении потерянных пользователей см. в разделе Диагностика пользователей, утративших связь с учетной записью. Ознакомьтесь также со статьей Как настроить безопасность базы данных SQL Azure после аварийного восстановления.

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

Дополнительные сведения об управлении пользователями и именами входа при копировании базы данных на другой сервер см. в статье Как настроить безопасность базы данных SQL Azure после аварийного восстановления.

Ошибки копирования базы данных

При копировании базы данных в базе данных SQL Azure могут возникнуть следующие ошибки. Дополнительные сведения см. в статье Копирование базы данных SQL Azure.

Код ошибки Статус Description
40635 16 Клиент с IP-адресом "%.*ls" временно отключен.
40637 16 Возможность создания копии базы данных в настоящее время отключена.
40561 16 Не удалось скопировать базу данных. Исходная или целевая база данных не существует.
40562 16 Не удалось скопировать базу данных. Исходная база данных удалена.
40563 16 Не удалось скопировать базу данных. Целевая база данных удалена.
40564 16 Произошел сбой при копировании базы данных из-за внутренней ошибки. Удалите целевую базу данных и повторите попытку.
40565 16 Не удалось скопировать базу данных. Допускается не более одной одновременной операции копирования базы данных из одного источника. Удалите целевую базу данных и повторите попытку позднее.
40566 16 Произошел сбой при копировании базы данных из-за внутренней ошибки. Удалите целевую базу данных и повторите попытку.
40567 16 Произошел сбой при копировании базы данных из-за внутренней ошибки. Удалите целевую базу данных и повторите попытку.
40568 16 Не удалось скопировать базу данных. Исходная база данных стала недоступна. Удалите целевую базу данных и повторите попытку.
40569 16 Не удалось скопировать базу данных. Целевая база данных стала недоступна. Удалите целевую базу данных и повторите попытку.
40570 16 Произошел сбой при копировании базы данных из-за внутренней ошибки. Удалите целевую базу данных и повторите попытку позднее.
40571 16 Произошел сбой при копировании базы данных из-за внутренней ошибки. Удалите целевую базу данных и повторите попытку позднее.