Help us improve the AWS re:Post Knowledge Center by sharing your feedback in a brief survey. Your input can influence how we create and update our content to better support your AWS journey.
Wie behebe ich Fehler bei der Verwendung des nativen Backups und der nativen Wiederherstellung für meine DB-Instance in Amazon RDS für SQL Server?
Ich möchte Fehler beheben, die auftreten, wenn ich meine DB-Instance in Amazon Relational Database Service (Amazon RDS) für Microsoft SQL Server sichere und wiederherstelle.
Kurzbeschreibung
Um Fehler zu beheben, die bei der Verwendung von nativem Backup und nativer Wiederherstellung für deine DB-Instance in Amazon RDS für SQL Server auftreten, versuche Folgendes:
- Erhöhe den Speicherplatz auf der DB-Instance.
- Erteile der AWS Identity and Access Management (IAM)-Rolle Zugriffsberechtigungen für die Option SQLSERVER_BACKUP_RESTORE.
- Erteile der IAM-Rolle für die Optionsgruppe Berechtigungen für den AWS Key Management Service (AWS KMS).
- Erteile der IAM-Richtlinie oder Bucket-Richtlinie Berechtigungen für kontoübergreifende Backups.
- Importiere das Transparent Data Encryption (TDE)-Zertifikat.
- Gib die korrekten Windows-Laufwerksbuchstaben an.
- Setze den Paramter MAXTRANSFERSIZE der Backup-Datei auf einen Wert, der größer ist als der Wert, den du bei der Wiederherstellung verwendet hast.
- Reduziere die Größe der Backup-Datei, um die Datei in den Amazon Simple Storage Service (Amazon S3) zu übertragen.
Lösung
Hinweis: Wenn du beim Ausführen von AWS Command Line Interface (AWS CLI)-Befehlen Fehlermeldungen erhältst, findest du weitere Informationen dazu unter Fehlerbehebung bei der AWS CLI. Stelle außerdem sicher, dass du die neueste Version der AWS CLI verwendest.
Den Speicherplatz auf der DB-Instance erhöhen
Deine DB-Instance verfügt möglicherweise über unzureichenden Speicherplatz, wenn du das Backup von einer Amazon Elastic Compute Cloud (Amazon EC2)- oder On-Premises-Instance wiederherstellst. Amazon RDS bricht die Aufgabe dann ab.
Beispiel für eine Protokollausgabe:
[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.
Um dieses Problem zu beheben, kannst du den verfügbaren Speicher auf der DB-Instance erhöhen. Oder reduziere die Größe der Transaktionsprotokolldatei auf der DB-Instance.
Verfügbaren Speicher erhöhen
Führe die folgenden Schritte aus:
- Führe die folgende Abfrage auf der EC2- oder On-Premises-Instance aus, um die Größe der Datenbank-Datendatei und der Transaktionsprotokolldatei zu überprüfen:
Hinweis: Ersetze DB_NAME durch den Namen deiner Datenbank.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) - Vergleiche die Datenbankgröße der EC2- oder On-Premises-Instance mit dem verfügbaren Speicher auf der DB-Instance.
- Erhöhe den verfügbaren Speicher auf der DB-Instance und stelle die Datenbank dann wieder her.
Größe der Transaktionsprotokolldatei reduzieren
Führe die folgenden Schritte aus:
- Führe den folgenden Befehl aus, um die aktuelle Größe der Transaktionsprotokolldatei auf der EC2- oder On-Premises-Instance zu reduzieren:
Hinweis: Ersetze FileName durch den Namen deiner Daten- oder Transaktionsprotokolldatei und FileSizeMB durch die Zieldateigröße in Megabyte.DBCC SHRINKFILE (FileName, FileSizeMB) - Erstelle ein Backup der Datenbank.
Erteile der IAM-Rolle Zugriffsberechtigungen für die Option SQLSERVER_BACKUP_RESTORE
Wenn du nicht über ausreichende Berechtigungen für die IAM-Rolle verfügst, die mit der Option SQLSERVER_BACKUP_RESTORE verknüpft ist, bricht Amazon RDS die Aufgabe ab.
Beispiel für eine Protokollausgabe:
[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
-oder-
[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
Gehe wie folgt vor, um dieses Problem zu beheben:
-
Führe den folgenden Befehl aus, um zu überprüfen, ob der S3-Bucket und das Ordnerpräfix in der Wiederherstellungsabfrage korrekt sind:
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'; -
Füge der IAM-Berechtigungsrichtlinie die folgende Anweisung hinzu:
{ "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/*" } ] }Hinweis: Ersetze in der vorherigen Richtlinie arn:aws:s3:::bucket_name durch den Amazon-Ressourcennamen (ARN) deines S3-Buckets.
-
Füge die Richtlinie der Rolle hinzu, die mit der Option SQLSERVER_BACKUP_RESTORE verknüpft ist.
-
Vergewissere dich, dass die Option SQLSERVER_BACKUP_RESTORE in der Optionsgruppe enthalten ist, die der DB-Instance zugeordnet ist.
Weitere Informationen findest du unter Wie führe ich ein natives Backup meiner SQL-Server-Datenbank auf Amazon RDS durch und stelle sie von Amazon S3 wieder her?
Erteile der IAM-Rolle für die Optionsgruppe AWS KMS-Berechtigungen
Mit dem nativen Backup und der nativen Wiederherstellung von RDS für SQL Server kann die Backup-Datei clientseitig verschlüsselt und entschlüsselt werden. Wenn die Richtlinie für die IAM-Rolle, die mit der Optionsgruppe verknüpft ist, keine Berechtigungen für den KMS-Schlüssel hat, schlägt das Backup oder die Wiederherstellung fehl.
Beispiel für eine Protokollausgabe:
[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
Um dieses Problem zu beheben, füge der IAM-Richtlinie, die der Optionsgruppe zugeordnet ist, die folgende Anweisung hinzu.
{ "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/*" } ] }
Erteile in der IAM-Richtlinie oder Bucket-Richtlinie Berechtigungen für kontoübergreifende Backups
Wenn du ein Datenbank-Backup von einem AWS-Konto in ein anderes Konto wiederherstellst, bricht Amazon RDS die Aufgabe möglicherweise aufgrund unzureichender Berechtigungen ab. Du speicherst beispielsweise das Backup in einem S3-Bucket in Konto A und stellst es in einer Amazon RDS-DB-Instance in Konto B wieder her.
Es fehlen entweder Berechtigungen in der Richtlinie für die IAM-Rolle, die der Optionsgruppe zugeordnet ist, oder in der Bucket-Richtlinie des S3-Buckets.
Beispiel für eine Protokollausgabe:
[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.
Gehe wie folgt vor, um dieses Problem zu beheben:
-
Füge der IAM-Richtlinie, die mit der Optionsgruppe in Konto B verknüpft ist, die folgende Anweisung hinzu:
{ "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/*" ] } ] } -
Füge der Bucket-Richtlinie, die mit dem S3-Bucket in Konto A verknüpft ist, die folgende Anweisung hinzu:
{ "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/*" ] } ] }
Weitere Informationen findest du unter Import und Export von SQL-Server-Datenbanken mit nativer Sicherung und Wiederherstellung und Bucket-Besitzer gewährt kontoübergreifende Berechtigungen für Objekte, die er nicht besitzt.
Importiere das TDE-Zertifikat
Wenn du ein Backup einer Datenbank wiederherstellst, aber das TDE-Zertifikat nicht auf den Zielserver importiert hast, wird die Aufgabe abgebrochen. Du versuchst beispielsweise, eine Datenbank mit TDE von einer EC2- oder On-Premises-Instance in eine DB-Instance in RDS für SQL Server wiederherzustellen.
Beispiel für eine Protokollausgabe:
[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.
Um dieses Problem zu beheben, importiere das TDE-Zertifikat auf den Zielserver.
Um dieses Problem zu vermeiden, verwende eine der folgenden Problemumgehungen.
Du sicherst die Datenbank von einer On-Premises- oder EC2-Instance, aber die Ziel-RDS für SQL Server befindet sich in mehreren Availability Zones
Führe die folgenden Schritte aus:
-
Erstelle ein Backup der EC2- oder On-Premises-Datenbank mit aktivierter TDE.
-
Stelle das Backup als neue Datenbank auf deinem On-Premises-Server wieder her.
-
Führe den folgenden Befehl aus, um die Verschlüsselung für die neue Datenbank zu deaktivieren:
USE master; GO ALTER DATABASE Databasename SET ENCRYPTION OFF; GOHinweis: Ersetze Databasename durch den Namen deiner Datenbank.
-
Führe den folgenden Befehl aus, um den Datenbank-Verschlüsselungsschlüssel (Database Encryption Key, DEK) der neuen Datenbank zu löschen:
USE Databasename; GO DROP DATABASE ENCRYPTION KEY; GOHinweis: Ersetze Databasename durch den Namen deiner Datenbank.
-
Führe ein natives SQL-Server-Backup durch und stelle das Backup dann in der DB-Instance wieder her.
Du sicherst die DB-Instance von einer DB-Instance in RDS für SQL Server, die mit TDE verschlüsselt ist
Führe die folgenden Schritte aus:
- Verwende einen DB-Snapshot von der Instance in RDS für SQL Server für die Wiederherstellung in einer neuen DB-Instance.
Hinweis: Wenn du die Edition der DB-Instance änderst, findest du Informationen dazu unter Überlegungen zu Microsoft SQL Server. - Deaktiviere TDE für die neue DB-Instance.
- Führe ein natives SQL-Backup durch und stelle das Backup dann in der DB-Instance wieder her.
- Aktiviere TDE für die neue DB-Instance.
Gib die korrekten Windows-Laufwerksbuchstaben an
RDS für SQL Server kann eine Datenbank in zusätzlichen Speichervolumes wiederherstellen. Wenn du einen falschen Windows-Laufwerksbuchstaben für ein Speichervolume angibst, schlägt der Wiederherstellungsvorgang fehl.
Beispiel für Abfrage und Fehlermeldung:
-- 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.
Um dieses Problem zu beheben, überprüfe die Windows-Laufwerksbuchstaben. Führe die folgenden Schritte aus:
-
Liste die angehängten zusätzlichen Speichervolumes auf deiner DB-Instance mit dem Befehl describe-db-instances auf:
aws rds describe-db-instances \ --db-instance-identifier your-db-instance-id \ --query 'DBInstances[].AdditionalStorageVolumes[].VolumeName' \ --output textHinweis: Ersetze your-db-instance-id durch die Kennung deiner DB-Instance.
Hinweis: Wenn du den Volume-Namen nicht abrufen kannst, musst du die AWS CLI auf die neueste Version aktualisieren.Weitere Informationen zu Speichervolumes findest du unter Überlegungen zur Verwendung zusätzlicher Speichervolumes mit RDS für SQL Server.
-
Passe deine Abfrage an, um die korrekten Windows-Laufwerksbuchstaben für
@data_file_volumeund@log_file_volumeanzugeben.
Setze den Parameter MAXTRANSFERSIZE der Backup-Datei auf einen Wert, der größer ist als der Wert, den du bei der Wiederherstellung verwendet hast
Ein MAXTRANSFERSIZE-Fehler tritt auf, wenn das Backup FILESTREAM- oder In-Memory OLTP-Dateigruppen enthält und du bei der Wiederherstellung eine falsche MAXTRANSFERSIZE verwendet hast.
Hinweis: RDS für SQL Server unterstützt das FILESTREAM-Feature nicht.
Wenn du den Parameter MAXTRANSFERSIZE explizit angibst, kann ein Fehler auftreten: „RESTORE requires MAXTRANSFERSIZE=<required_size> but <your_specified_size> was specified.“
Beispiel für Abfrage und Protokollausgabe:
-- 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.
Um dieses Problem zu beheben, gib MAXTRANSFERSIZE nicht an:
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'
Oder gib einen Wert an, der gleich oder größer als die in der Fehlermeldung angegebene Größe ist:
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
Die Größe der Backup-Datei reduzieren, um sie nach Amazon S3 zu übertragen
Dieses Problem tritt auf, wenn du ein Objekt verschiebst, das größer als die maximale Objektgröße für einen mehrteiligen Amazon-S3-Vorgang ist. Amazon S3 unterteilt das größere Objekt in mehrere Teile, die die maximale Anzahl von Teilen für jeden Upload überschreiten.
Beispiel für eine Protokollausgabe:
[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
Aktiviere zur Behebung dieses Problems die Komprimierung von Datenbank-Backups, um die Backup-Größe zu verringern, damit Amazon S3 die Datei empfangen kann.
Führe den folgenden Befehl aus, um die Backup-Komprimierung zu aktivieren:
exec rdsadmin..rds_set_configuration 'S3 backup compression', 'true';
- Sprache
- Deutsch
Ähnliche Videos


Relevanter Inhalt
AWS OFFICIALAktualisiert vor einem Jahr