Como faço para resolver erros ao usar backup e restauração nativos para minha instância de banco de dados do Amazon RDS para SQL Server?
Quero resolver os erros que ocorrem ao fazer backup e restaurar minha instância de banco de dados do Amazon Relational Database Service (Amazon RDS) para Microsoft SQL Server.
Breve descrição
Para resolver erros que ocorrem ao usar o backup e restauração nativos na instância de banco de dados do Amazon RDS para SQL Server, faça o seguinte:
- Aumente o espaço na instância de banco de dados.
- Conceda permissões de acesso ao perfil do AWS Identity and Access Management (IAM) para a opção SQLSERVER_BACKUP_RESTORE.
- Conceda permissões do AWS Key Management Service (AWS KMS) ao perfil do IAM para o grupo de opções.
- Conceda permissões à política do IAM ou à política de bucket para backups entre contas.
- Importe o certificado Transparent Data Encryption (TDE).
- Especifique as letras corretas da unidade do Windows.
- Defina o MAXTRANSFERSIZE do arquivo de backup como um valor maior do que o valor usado ao fazer a restauração.
- Reduza o tamanho para transferir o arquivo de backup para o Amazon Simple Storage Service (Amazon S3).
Resolução
Observação: se você receber erros ao executar comandos da AWS Command Line Interface (AWS CLI), consulte Solução de problemas da AWS CLI. Além disso, verifique se você está usando a versão mais recente da AWS CLI.
Aumentar o espaço na instância de banco de dados
Pode faltar espaço na instância do banco de dados durante a restauração do backup de uma instância do Amazon Elastic Compute Cloud (Amazon EC2) ou on-premises. Nesses casos, o Amazon RDS interrompe a tarefa.
Exemplo de saída de log:
[2022-04-07 05:21:22.317] Aborted the task because of a task failure or a concurrent RESTORE_DB request. [2022-04-07 05:21:22.437] Task has been aborted [2022-04-07 05:21:22.440] There is not enough space on the disk to perform restore database operation.
Para resolver o problema, é possível aumentar o armazenamento disponível na instância do banco de dados. Outra opção é reduzir o tamanho do arquivo de log de transações na instância do banco de dados.
Aumentar o armazenamento disponível
Siga estas etapas:
- Execute a seguinte consulta na instância do EC2 ou on-premises para verificar o tamanho do arquivo de dados do banco de dados e do arquivo de log de transações:
Observação: substitua DB_NAME pelo nome do seu banco de dados.SELECT DB_NAME(database_id) AS DatabaseName, Name AS Logical_Name, Physical_Name, (size*8)/1024/1024 AS SizeGB FROM sys.master_files WHERE DB_NAME(database_id) = 'DB_NAME' GO Database Size = (DB_Name size + DB_Name_Log size) - Compare o tamanho do banco de dados da instância do EC2 ou on-premises com o armazenamento disponível na instância do banco de dados.
- Aumente o armazenamento disponível na instância do banco de dados e, em seguida, faça a restauração.
Reduzir o tamanho do arquivo de log de transações
Siga estas etapas:
- Para reduzir o tamanho atual do arquivo de log de transações na instância do EC2 ou on-premises, execute o seguinte comando:
Observação: substitua FileName pelo nome do arquivo de dados ou de log de transações e FileSizeMB pelo tamanho do arquivo de destino em megabytes.DBCC SHRINKFILE (FileName, FileSizeMB) - Faça backup do banco de dados.
Conceder permissões de acesso ao perfil do IAM para a opção SQLSERVER_BACKUP_RESTORE
Se você não tiver permissões suficientes para o perfil do IAM associado à opção SQLSERVER_BACKUP_RESTORE, o Amazon RDS interromperá a tarefa.
Exemplo de saída de log:
[2020-12-15 08:56:22.143] Aborted the task because of a task failure or a concurrent RESTORE_DB request. [2020-12-15 08:56:22.213] Task has been aborted [2020-12-15 08:56:22.217] Access Denied
-ou-
[2022-07-16 16:08:22.067] Task execution has started. [2022-07-16 16:08:22.143] Aborted the task because of a task failure or an overlap with your preferred backup window for RDS automated backup. [2022-07-16 16:08:22.147] Task has been aborted [2022-07-16 16:08:22.150] Access Denied
Para solucionar o problema, siga estas etapas:
-
Execute o comando a seguir para verificar se o bucket do S3 e o prefixo da pasta estão corretos na consulta de restauração:
exec msdb.dbo.rds_restore_database @restore_db_name='database_name', @s3_arn_to_restore_from='arn:aws:s3:::bucket_name/file_name_and_extension'; -
Adicione a seguinte declaração à política de permissões do IAM:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetBucketLocation" ], "Resource": "arn:aws:s3:::bucket_name" }, { "Effect": "Allow", "Action": [ "s3:GetObjectAttributes", "s3:GetObject", "s3:PutObject", "s3:ListMultipartUploadParts", "s3:AbortMultipartUpload" ], "Resource": "arn:aws:s3:::bucket_name/*" } ] }Observação: na política anterior, substitua arn:aws:s3:::bucket_name pelo nome do recurso da Amazon (ARN) do bucket do S3.
-
Adicione a política ao perfil associado à opção SQLSERVER_BACKUP_RESTORE.
-
Verifique se a opção SQLSERVER_BACKUP_RESTORE está no grupo de opções associado à instância do banco de dados.
Para saber mais, consulte Como faço um backup nativo do meu banco de dados do SQL Server para o Amazon RDS e restauro a partir do Amazon S3?
Conceder permissões do AWS KMS ao perfil do IAM para o grupo de opções
O backup e a restauração nativos do RDS para SQL Server podem criptografar e descriptografar o arquivo de backup no lado do cliente. Se a política do perfil do IAM associado ao grupo de opções não tiver permissões para a chave KMS, o backup ou a restauração falharão.
Exemplo de saída de log:
[2025-12-12 01:34:22.217] Aborted the task because of a task failure or an overlap with your preferred backup window for RDS automated backup. [2025-12-12 01:34:22.223] Task has been aborted [2025-12-12 01:34:22.230] User: arn:aws:sts::0123456789:assumed-role/<your_role_name>/RDS-SqlServerBackupRestore is not authorized to perform: kms:DescribeKey on resource: arn:aws:kms:ap-northeast-1:0123456789:key/<your_kms_key_id> because no identity-based policy allows the kms:DescribeKey action
Para resolver o problema, adicione a seguinte declaração à política do IAM associada ao grupo de opções.
{ "Version":"2012-10-17", "Statement": [ { "Sid": "AllowAccessToKey", "Effect": "Allow", "Action": [ "kms:DescribeKey", "kms:GenerateDataKey", "kms:Encrypt", "kms:Decrypt" ], "Resource": "arn:aws:kms:us-east-1:0123456789:key/key-id" }, { "Sid": "AllowAccessToS3", "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetBucketLocation" ], "Resource": "arn:aws:s3:::PUT-BUCKET-NAME" }, { "Sid": "GetS3Info", "Effect": "Allow", "Action": [ "s3:GetObjectAttributes", "s3:GetObject", "s3:PutObject", "s3:ListMultipartUploadParts", "s3:AbortMultipartUpload" ], "Resource": "arn:aws:s3:::PUT-BUCKET-NAME/*" } ] }
Conceder permissões à política do IAM ou à política de bucket para backups entre contas
Quando você restaura um backup de banco de dados de uma conta da AWS para outra diferente, o Amazon RDS pode interromper a tarefa por permissões insuficientes. Por exemplo, você armazena o backup em um bucket do S3 na conta A e o restaura em uma instância de banco de dados do Amazon RDS na conta B.
A política do perfil do IAM associado ao grupo de opções ou a política de bucket associada ao bucket do S3 não têm as permissões necessárias.
Exemplo de saída de log:
[2022-02-03 15:57:22.180] Aborted the task because of a task failure or a concurrent RESTORE_DB request. [2022-02-03 15:57:22.260] Task has been aborted [2022-02-03 15:57:22.263] Error making request with Error Code Forbidden and Http Status Code Forbidden. No further error information was returned by the service.
Para solucionar o problema, siga estas etapas:
-
Adicione a seguinte declaração à política do IAM associada ao grupo de opções na conta B:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetBucketLocation" ], "Resource": "arn:aws:s3:::name_of_bucket_present_in_Account_A" }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject", "s3:ListMultipartUploadParts", "s3:AbortMultipartUpload" ], "Resource": "arn:aws:s3:::name_of_bucket_present_in_Account_A/*" }, { "Action": [ "kms:DescribeKey", "kms:GenerateDataKey", "kms:Decrypt", "kms:Encrypt" "kms:ReEncryptTo", "kms:ReEncryptFrom" ], "Effect": "Allow", "Resource": [ "arn:aws: PUT THE NAME OF THE KEY HERE", "arn:aws:s3:::name_of_bucket_present_in_Account_A/*" ] } ] } -
Adicione a seguinte declaração à política de bucket associada ao bucket do S3 na conta A:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Permission to cross account", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::AWS-ACCOUNT-ID-OF-RDS:role/service-role/PUT-ROLE-NAME" ] }, "Action": [ "s3:ListBucket", "s3:GetBucketLocation" ], "Resource": [ "arn:aws:s3:::PUT-BUCKET-NAME" ] }, { "Sid": "Permission to cross account on object level", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::AWS-ACCOUNT-ID-OF-RDS:role/service-role/PUT-ROLE-NAME" ] }, "Action": [ "s3:GetObject", "s3:PutObject", "s3:ListMultipartUploadParts", "s3:AbortMultipartUpload" ], "Resource": [ "arn:aws:s3:::PUT-BUCKET-NAME/*" ] } ] }
Para saber mais, consulte Importing and exporting SQL Server databases using native backup and restore (Importar e exportar bancos de dados do SQL Server usando backup e restauração nativos) e Bucket owner granting cross-account permission to objects it does not own (Proprietário do bucket concede permissão entre contas a objetos que não possui).
Importar o certificado TDE
Quando você restaura o backup de um banco de dados, mas não importa o certificado TDE para o servidor de destino, a tarefa é interrompida. Por exemplo, você tenta restaurar um banco de dados com TDE de uma instância do EC2 ou on-premises para uma instância de banco de dados do RDS para SQL Server.
Exemplo de saída de log:
[2022-06-15 11:55:22.280] Cannot find server certificate with thumbprint '########'. [2022-06-15 11:55:22.280] RESTORE FILELIST is terminating abnormally. [2022-06-15 11:55:22.300] Aborted the task because of a task failure or a concurrent RESTORE_DB request. [2022-06-15 11:55:22.333] Task has been aborted [2022-06-15 11:55:22.337] Empty restore file list result retrieved.
Para resolver o problema, importe o certificado TDE para o servidor de destino.
Para evitar esse problema, use uma das seguintes soluções alternativas.
Você faz backup do banco de dados de uma instância on-premises ou do EC2, mas o RDS para SQL Server de destino está em várias Zonas de Disponibilidade
Siga estas etapas:
-
Crie um backup do banco de dados do EC2 ou on-premises com o TDE ativado.
-
Restaure o backup como um novo banco de dados no servidor on-premises.
-
Execute o comando a seguir para desativar a criptografia no novo banco de dados:
USE master; GO ALTER DATABASE Databasename SET ENCRYPTION OFF; GOObservação: substitua Databasename pelo nome do seu banco de dados.
-
Execute o seguinte comando para remover a chave de criptografia de banco de dados (DEK) no novo banco de dados:
USE Databasename; GO DROP DATABASE ENCRYPTION KEY; GOObservação: substitua Databasename pelo nome do seu banco de dados.
-
Faça um backup nativo do SQL Server e, em seguida, restaure o backup na instância de banco de dados.
Você faz backup da instância do banco de dados em uma instância de banco de dados do RDS para SQL Server criptografada com o TDE
Siga estas etapas:
- Use um snapshot de banco de dados da instância do RDS para SQL Server a fim de restaurar em uma nova instância de banco de dados.
Observação: se você alterar a edição da instância do banco de dados, consulte as Microsoft SQL Server considerations (Considerações sobre o Microsoft SQL Server). - Desative o TDE para a nova instância de banco de dados.
- Faça um backup nativo do SQL e, em seguida, restaure o backup na instância de banco de dados.
- Ative o TDE para a nova instância de banco de dados.
Especificar as letras corretas da unidade do Windows
O RDS para SQL Server pode restaurar um banco de dados em volumes de armazenamento adicionais. Quando você especifica uma letra de unidade do Windows incorreta para um volume de armazenamento, a operação de restauração falha.
Exemplo de consulta e mensagem de erro:
-- Native restore query EXEC msdb.dbo.rds_restore_database @restore_db_name='my_database', @s3_arn_to_restore_from='arn:aws:s3:::<your_bucket_name>/my_database.bak', @data_file_volume='Y:', -- incorrect drive letter. @log_file_volume='Z:'; -- incorrect drive letter. -- Error message Message 50000、Level 16、State 1、Procedure msdb.dbo.rds_restore_database、Line 122 Volume for data files is unavailable. Choose from available volumes.
Para resolver o problema, verifique as letras da unidade do Windows. Siga estas etapas:
-
Liste os volumes de armazenamento adicionais anexados à instância de banco de dados com o comando describe-db-instances:
aws rds describe-db-instances \ --db-instance-identifier your-db-instance-id \ --query 'DBInstances[].AdditionalStorageVolumes[].VolumeName' \ --output textObservação: substitua your-db-instance-id pelo identificador da instância de banco de dados.
Observação: se não conseguir obter o nome do volume, você precisará atualizar a AWS CLI para a versão mais recente.Para saber mais sobre volumes de armazenamento, consulte Considerations for using additional storage volumes with RDS for SQL Server (Considerações sobre o uso de volumes de armazenamento adicionais no RDS para SQL Server).
-
Corrija a consulta para especificar as letras corretas da unidade do Windows para
@data_file_volumee@log_file_volume.
Definir o MAXTRANSFERSIZE do arquivo de backup como um valor maior do que o usado ao fazer a restauração
O erro de MAXTRANSFERSIZE ocorre quando o backup contém grupos de arquivos FILESTREAM ou OLTP na memória, e você usou um MAXTRANSFERSIZE incorreto durante a restauração.
Observação: o RDS para SQL Server não é compatível com o recurso FILESTREAM.
Se você especificar o MAXTRANSFERSIZE explicitamente, poderá encontrar um erro: "RESTORE requires MAXTRANSFERSIZE=<required_size> but <your_specified_size> was specified."
Exemplo de consulta e saída de log:
-- query EXEC msdb.dbo.rds_restore_database @restore_db_name='my_database', @s3_arn_to_restore_from='arn:aws:s3:::<your_bucket_name>/my_database.bak', @max_transfer_size=65536 -- specified MAXTRANSFERSIZE explicitly -- error message [2025-12-11 07:26:22.320] Task execution has started. [2025-12-11 07:26:22.520] RESTORE requires MAXTRANSFERSIZE=4194304 but 65536 was specified. RESTORE DATABASE is terminating abnormally.
Para resolver o problema, não especifique MAXTRANSFERSIZE:
EXEC msdb.dbo.rds_restore_database @restore_db_name='my_database', @s3_arn_to_restore_from='arn:aws:s3:::<your_bucket_name>/my_database.bak'
Ou especifique um valor igual ou maior que o tamanho indicado na mensagem de erro:
EXEC msdb.dbo.rds_restore_database @restore_db_name='my_database', @s3_arn_to_restore_from='arn:aws:s3:::<your_bucket_name>/my_database.bak', @max_transfer_size=4194304
Reduzir o tamanho do arquivo de backup para transferi-lo ao Amazon S3
Esse problema ocorre quando você move um objeto maior do que o tamanho máximo para uma operação de várias partes do Amazon S3. O Amazon S3 divide o objeto maior em várias partes que excedem o número máximo de partes permitido para cada upload.
Exemplo de saída de log:
[2022-04-21 16:45:04.597] reviews_consumer/reviews_consumer_PostUpdate_042122.bak: Completed processing 100% of S3 chunks. [2022-04-21 16:47:05.427] Write on "####" failed: 995(The I/O operation has been aborted because of either a thread exit or an application request.) A nonrecoverable I/O error occurred on file "XXXX:" 995(The I/O operation has been aborted because of either a thread exit or an application request.). BACKUP DATABASE is terminating abnormally. [2022-04-21 16:47:22.033] Unable to write chunks to S3 as S3 processing has been aborted. [2022-04-21 16:47:22.040] reviews_consumer/reviews_consumer_PostUpdate_042122.bak: Aborting S3 upload, waiting for S3 workers to clean up and exit [2022-04-21 16:47:22.053] Aborted the task because of a task failure or an overlap with your preferred backup window for RDS automated backup. [2022-04-21 16:47:22.060] reviews_consumer/reviews_consumer_PostUpdate_042122.bak: Aborting S3 upload, waiting for S3 workers to clean up and exit [2022-04-21 16:47:22.067] S3 write stream upload failed. Encountered an error while uploading an S3 chunk: Part number must be an integer between 1 and 10000, inclusive S3 write stream upload failed. Encountered an error while uploading an S3 chunk: Part number must be an integer between 1 and 10000, inclusive S3 write stream upload failed. Encountered an error while uploading an S3 chunk: Part number must be an integer between 1 and 10000, inclusive S3 write stream upload failed. Encountered an error while uploading an S3 chunk: Part number must be an integer between 1 and 10000, inclusive
Para resolver o problema, ative a compactação de backup do banco de dados a fim de reduzir o tamanho do backup, de modo que o Amazon S3 possa receber o arquivo.
Para ativar a compactação de backup, execute o seguinte comando:
exec rdsadmin..rds_set_configuration 'S3 backup compression', 'true';
- Idioma
- Português
Vídeos relacionados

