Копирование транзакционно согласованной копии базы данных в SQL Azure
Применимо к: База данных 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) отличаются. Дополнительную информацию об управлении именами входа при копировании базы данных на другой сервер см. в статье Настройка и управление безопасностью базы данных Azure SQL для геовосстановления или переключения на резервный ресурс. После успешного выполнения операции копирования на другой логический сервер и перед повторной сопоставлением других пользователей только имя входа, связанное с владельцем базы данных, или администратор сервера может войти в скопированную базу данных. Чтобы разрешить имена входа и установить доступ к данным после завершения операции копирования, смотрите Разрешение имен входа.
Копирование с помощью портала Azure
Чтобы скопировать базу данных с помощью портал Azure, откройте страницу базы данных, а затем нажмите кнопку "Копировать", чтобы открыть страницу "Создать База данных SQL- Копировать базу данных". Введите значения для целевого логического сервера, в который необходимо скопировать базу данных.
Копирование базы данных
Базу данных можно скопировать с помощью 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 .
Полный пример скрипта PowerShell см. в статье Использование PowerShell для копирования базы данных на новый логический сервер.
Мониторинг хода выполнения операции копирования
Следить за ходом процесса копирования можно путем запроса к представлениям sys.databases, sys.dm_database_copies и sys.dm_operation_status. Пока выполняется копирование, state_desc
для новой базы данных задан sys.databases
столбец COPYING
представления.
- Если копирование завершается ошибкой,
state_desc
для новой базы данных заданsys.databases
столбецSUSPECT
представления. Выполните инструкцию DROP для новой базы данных и повторите попытку позднее. - Если копирование выполнено успешно,
state_desc
для новой базы данных заданsys.databases
столбецONLINE
представления. Это означает, что копирование завершено и новая база данных является обычной базой данных, которую можно изменять независимо от исходной.
Примечание.
Если вы решите отменить копирование во время его выполнения, выполните инструкцию DROP DATABASE в новой базе данных.
Внимание
Если необходимо создать копию с значительно меньшей целью службы, чем источник, целевая база данных может не иметь достаточных ресурсов для завершения процесса заполнения и может привести к сбою операции копирования. В этом сценарии используйте запрос геовосстановление для создания копии на другом логическом сервере и (или) другом регионе. Дополнительные сведения см. в статье "Восстановление База данных SQL Azure с помощью резервных копий базы данных".
Разрешения
Чтобы создать копию базы данных, необходимо иметь следующие роли:
- владельца подписки или
- Роль участника SQL Server или
- Пользовательская роль на исходном логическом сервере со следующими разрешениями:
Microsoft.Sql/servers/databases/read
-
Microsoft.Sql/servers/databases/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.
Код ошибки | Статус | 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 | Произошел сбой при копировании базы данных из-за внутренней ошибки. Удалите целевую базу данных и повторите попытку позднее. |