Come posso risolvere gli errori quando utilizzo il backup e il ripristino nativi per la mia istanza database di Amazon RDS per SQL Server?
Desidero risolvere gli errori che si verificano durante il backup e il ripristino della mia istanza database Amazon Relational Database Service (Amazon RDS) per Microsoft SQL Server.
Breve descrizione
Per risolvere gli errori che si verificano quando utilizzi il backup e il ripristino nativi per la tua istanza database di Amazon RDS per SQL Server, prova le seguenti opzioni:
- Aumenta lo spazio sull'istanza database.
- Concedi le autorizzazioni di accesso al ruolo AWS Identity and Access Management (AWS IAM) per l'opzione SQLSERVER\ _BACKUP\ _RESTORE.
- Assegna le autorizzazioni del Servizio AWS di gestione delle chiavi (AWS KMS) al ruolo IAM per il gruppo di opzioni.
- Concedi le autorizzazioni alla policy IAM o alla policy di bucket per i backup tra account.
- Importa il certificato Transparent Data Encryption (TDE).
- Specifica le lettere corrette dell'unità Windows.
- Imposta MAXTRANSFERSIZE per il file di backup su un valore maggiore di quello utilizzato durante l'esecuzione del ripristino.
- Riduci le dimensioni del file di backup per trasferire il file su Amazon Simple Storage Service (Amazon S3).
Risoluzione
Nota: se ricevi degli errori quando esegui i comandi dell'Interfaccia della linea di comando AWS (AWS CLI), consulta Risoluzione degli errori relativi ad AWS CLI. Inoltre, assicurati che la versione di AWS CLI che stai utilizzando sia la più recente.
Aumenta lo spazio sull'istanza database
Lo spazio dell'istanza database potrebbe essere insufficiente quando ripristini il backup da un'istanza Amazon Elastic Compute Cloud (Amazon EC2) o da un'istanza on-premises. In tal caso, Amazon RDS interrompe l'operazione.
Esempio di output del 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.
Per risolvere questo problema, puoi aumentare lo spazio di archiviazione disponibile sull'istanza database. In alternativa, riduci le dimensioni del file di log delle transazioni sull'istanza database.
Aumenta lo spazio di archiviazione disponibile
Completa i seguenti passaggi:
- Esegui la seguente query sull'istanza EC2 o on-premises per verificare le dimensioni del file di dati del database e del file di log delle transazioni:
Nota: sostituisci DB_NAME con il nome del tuo database.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) - Confronta le dimensioni del database delle istanze EC2 o on-premises con lo spazio di archiviazione disponibile sull'istanza database.
- Aumenta lo spazio di archiviazione disponibile sull'istanza database e ripristina quindi il database.
Riduci le dimensioni del file di log delle transazioni
Completa i seguenti passaggi:
- Per ridurre le attuali dimensioni del file di log delle transazioni sull'istanza EC2 o on-premises, esegui questo comando:
Nota: sostituisci FileName con il nome del file di dati o del file di log delle transazioni e FileSizeMB con la dimensione del file di destinazione in megabyte.DBCC SHRINKFILE (FileName, FileSizeMB) - Esegui il backup del database.
Concedi le autorizzazioni di accesso al ruolo IAM per l'opzione SQLSERVER\ _BACKUP\ _RESTORE
Se le autorizzazioni di cui disponi per il ruolo IAM associato all'opzione SQLSERVER\ _BACKUP\ _RESTORE sono insufficienti, Amazon RDS interrompe l'attività.
Esempio di output del 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
-oppure-
[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
Per risolvere il problema, completa i seguenti passaggi:
-
Esegui questo comando per verificare che il bucket S3 e il prefisso della cartella siano corretti nella query di ripristino:
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'; -
Aggiungi la seguente dichiarazione alla politica delle autorizzazioni 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/*" } ] }Nota: nella policy precedente, sostituisci arn:aws:s3:::bucket_name con il nome della risorsa Amazon (ARN) del tuo bucket S3.
-
Aggiungi la policy al ruolo associato all'opzione SQLSERVER_BACKUP_RESTORE.
-
Verifica che l'opzione SQLSERVER_BACKUP_RESTORE faccia parte del gruppo di opzioni associato all'istanza database.
Per ulteriori informazioni, consulta Come posso eseguire un backup nativo del mio database SQL Server in Amazon RDS e ripristinarlo da Amazon S3?
Concedi le autorizzazioni AWS KMS al ruolo IAM per il gruppo di opzioni
Il backup e il ripristino nativi di RDS per SQL Server possono crittografare e decrittografare il file di backup sul lato client. Se la policy per il ruolo IAM associata al gruppo di opzioni non dispone delle autorizzazioni per la chiave KMS, il backup o il ripristino avranno esito negativo.
Esempio di output del 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
Per risolvere questo problema, aggiungi la seguente dichiarazione alla policy IAM associata al gruppo di opzioni.
{ "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/*" } ] }
Concedi le autorizzazioni alla policy IAM o alla policy di bucket per i backup tra account
Quando ripristini un backup del database da un account AWS a un altro account, Amazon RDS potrebbe interrompere l'operazione in assenza di autorizzazioni sufficienti. Supponiamo che tu archivi il backup in un bucket S3 nell'account A e lo ripristini in un'istanza database Amazon RDS nell'account B.
La policy per il ruolo IAM associata al gruppo di opzioni o la policy di bucket associata al bucket S3 non dispone delle autorizzazioni necessarie.
Esempio di output del 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.
Per risolvere il problema, completa i seguenti passaggi:
-
Aggiungi la seguente dichiarazione alla policy IAM associata al gruppo di opzioni nell'account 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/*" ] } ] } -
Aggiungi la seguente dichiarazione alla policy di bucket associata al bucket S3 nell'account 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/*" ] } ] }
Per ulteriori informazioni, consulta Importazione ed esportazione di database SQL Server mediante backup e ripristino nativi e Proprietario di un bucket che concede un'autorizzazione multi-account agli oggetti di cui non è proprietario.
Importa il certificato TDE
Quando ripristini un backup di un database, ma non importi il certificato TDE nel server di destinazione, l'operazione si interrompe. Ad esempio, tenti di ripristinare un database con TDE da un'istanza EC2 o on-premises a un'istanza database RDS per SQL Server.
Esempio di output del 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.
Per risolvere questo problema, importa il certificato TDE nel server di destinazione.
Per evitare questo problema, utilizza una delle seguenti soluzioni alternative.
Esegui il backup del database da un'istanza on-premises o EC2, ma l'istanza database RDS per SQL Server di destinazione si trova in più zone di disponibilità
Completa i seguenti passaggi:
-
Crea un backup del database EC2 o on-premises con TDE attivato.
-
Ripristina il backup come nuovo database all'interno del tuo server on-premises.
-
Esegui il comando seguente per disattivare la crittografia nel nuovo database:
USE master; GO ALTER DATABASE Databasename SET ENCRYPTION OFF; GONota: sostituisci Databasename con il nome del tuo database.
-
Esegui questo comando per eliminare la chiave di crittografia del database (DEK) nel nuovo database:
USE Databasename; GO DROP DATABASE ENCRYPTION KEY; GONota: sostituisci Databasename con il nome del tuo database.
-
Esegui un backup nativo di SQL Server, quindi ripristina il backup sull'istanza database.
Esegui il backup dell'istanza database da un'istanza database RDS per SQL Server crittografata con TDE
Completa i seguenti passaggi:
- Utilizza uno snapshot di database dell'istanza RDS per SQL Server per eseguire il ripristino in una nuova istanza database.
Nota: se modifichi l'edizione dell'istanza database, consulta le Considerazioni su Microsoft SQL Server. - Disattiva TDE per la nuova istanza database.
- Esegui un backup nativo di SQL, quindi ripristina il backup sull'istanza database.
- Attiva TDE per la nuova istanza database.
Specifica le lettere corrette dell'unità Windows
RDS per SQL Server può ripristinare un database su volumi di archiviazione aggiuntivi. Quando specifichi una lettera dell'unità Windows errata per un volume di archiviazione, l'operazione di ripristino ha esito negativo.
Esempio di query e messaggio di errore:
-- 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.
Per risolvere questo problema, controlla le lettere dell'unità di Windows. Completa i seguenti passaggi:
-
Elenca i volumi di archiviazione aggiuntivi collegati sulla tua istanza database con il comando describe-db-instances:
aws rds describe-db-instances \ --db-instance-identifier your-db-instance-id \ --query 'DBInstances[].AdditionalStorageVolumes[].VolumeName' \ --output textNota: sostituisci your-db-instance-id con l'identificatore della tua istanza database.
Nota: se non riesci a ottenere il nome del volume, devi aggiornare AWS CLI alla versione più recente.Per ulteriori informazioni sui volumi di archiviazione, consulta Considerazioni sull'utilizzo di volumi di archiviazione aggiuntivi con RDS per SQL Server.
-
Correggi la query per specificare le lettere corrette dell'unità Windows per
@data_file_volumee@log_file_volume.
Imposta MAXTRANSFERSIZE per il file di backup su un valore maggiore di quello utilizzato durante l'esecuzione del ripristino
Si verifica un errore MAXTRANSFERSIZE quando il backup contiene filegroup FILESTREAM o OLTP in memoria e durante il ripristino è stato utilizzato un valore MAXTRANSFERSIZE errato.
Nota: RDS per SQL Server non supporta la funzionalità FILESTREAM.
Se specifichi MAXTRANSFERSIZE in modo esplicito, potrebbe verificarsi un errore: "RESTORE requires MAXTRANSFERSIZE=<required_size> but <your_specified_size> was specified."
Esempio di query e output del 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.
Per risolvere questo problema, non specificare 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'
O in alternativa, specifica un valore maggiore o uguale alle dimensioni indicate nel messaggio di errore:
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
Riduci le dimensioni del file di backup per trasferire il file su Amazon S3
Questo problema si verifica quando sposti un oggetto più grande delle dimensioni massime consentite per un'operazione di Amazon S3 in più parti. Amazon S3 divide l'oggetto più grande in più parti che superano il numero massimo di parti per ogni caricamento.
Esempio di output del 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
Per risolvere questo problema, attiva la compressione del backup del database per ridurre le dimensioni del backup, affinché Amazon S3 possa ricevere il file.
Per attivare la compressione del backup, esegui questo comando:
exec rdsadmin..rds_set_configuration 'S3 backup compression', 'true';
- Argomenti
- Database
- Lingua
- Italiano
Video correlati

