Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
van toepassing op: SQL Server 2022 (16.x)
Dit artikel bevat aanbevolen procedures en tips voor probleemoplossing voor back-ups van SQL Server en herstel naar S3-compatibele objectopslag.
Zie voor meer informatie over het gebruik van Azure Blob Storage voor back-up- of herstelbewerkingen van SQL Server:
- back-up en herstel van SQL Server met S3-compatibele objectopslag
- Back-up van SQL Server naar URL voor S3-compatibele objectopslag
Problemen oplossen en veelvoorkomende oorzaken van fouten
Hieronder volgen enkele snelle manieren om fouten op te lossen bij het maken van een back-up van of het herstellen van de S3-compatibele objectopslag. Zie SQL-back-up en -herstel met S3-compatibele objectopslagom fouten als gevolg van niet-ondersteunde opties of beperkingen te voorkomen.
Zorg ervoor dat een correct opgemaakte URL wordt gebruikt
Hier volgt een voorbeeld van een virtuele host-URL die correct is gevormd bij het uitgeven van een T-SQL-back-upquery, zoals:
BACKUP DATABASE AdventureWorks2022
TO URL = 's3://<bucketName>.<virtualHost>/<pathToBackup>/<backupFileName>'
Of voor URL-padstijl:
BACKUP DATABASE AdventureWorks2022
TO URL = 's3://<domainName>/<bucketName>/<pathToBackup>/<backupFileName>';
Bekijk in URL:
De URL begint met het
s3://
-schema.De virtuele S3-host
<virtualHost>
of serverdomein<domainName>
bestaat en wordt uitgevoerd met HTTPS. Het eindpunt wordt gevalideerd door een CA die is geïnstalleerd op de SQL Server-besturingssysteemhost.<bucketName>
is de naam van deze bucket waarin de back-up wordt geschreven. Dit moet worden gemaakt voordat de back-up T-SQL wordt uitgevoerd. Het back-upscript T-SQL maakt de bucket niet voor de klant aan. Als de gebruiker bijvoorbeeld niet vooraf de bucket 'nonExistingBucket' maakt en een T-SQL-instructie als volgt uitvoert:BACKUP DATABASE AdventureWorks2022 TO URL = 's3://<your-endpoint>/nonExistingBucket/AdventureWorks2022.bak';
Een URL die niet juist is gevormd, kan het volgende retourneren:
Msg 3201, Level 16, State 1, Line 50 Cannot open backup device 's3://<your-endpoint>/nonExistingBucket/AdventureWorks2022.bak'. Operating system error 50(The request is not supported.). Msg 3013, Level 16, State 1, Line 50 BACKUP DATABASE is terminating abnormally.
De
<pathToBackup>
hoeft niet te bestaan voordat de back-up T-SQL wordt uitgevoerd. Deze wordt automatisch gemaakt op de opslagserver. Als de gebruiker bijvoorbeeld vooraf de bucket 'existingBucket' maakt en niet het pad'existingBucket/sqlbackups'
, wordt het volgende nog steeds uitgevoerd:
BACKUP DATABASE AdventureWorks2022
TO URL = 's3://<your-endpoint>/existingBucket/sqlbackups/AdventureWorks2022.bak';
Een referentie op serverniveau maken voordat u back-up/herstel uitvoert
Voordat u Transact-SQL queries naar S3-compatibele opslag uitvoert voor back-up of herstel, moet u een referentie op serverniveau aanmaken. Deze referentie moet de toegangssleutel en geheime sleutel bevatten die zijn ingesteld door klanten op hun S3-compatibele objectopslagserver voordat back-up-/herstelquery's worden uitgegeven.
Een voorbeeld van een referentie die moet worden gemaakt voor URL: s3://<your-endpoint>/myS3Bucket/sqlbackups/AdventureWorks2022.bak
is het volgende:
CREATE CREDENTIAL [s3://<your-endpoint>/myS3Bucket/sqlbackups/AdventureWorks2022.bak]
WITH IDENTITY = 'S3 Access Key',
SECRET = '<AccessKeyID>:<SecretKeyID>';
In deze instructie mag <AccessKeyID>
geen :
teken bevatten. Als de referentie niet is gemaakt voordat de back-up-/herstelquery wordt uitgevoerd, ziet de gebruiker het volgende foutbericht:
Msg 3201, Level 16, State 1, Line 50
Cannot open backup device 's3://<your-endpoint>/myS3Bucket/sqlbackups/AdventureWorks2022.bak'. Operating system error 50(The request is not supported.).
Msg 3013, Level 16, State 1, Line 50
BACKUP DATABASE is terminating abnormally.
De naam van de referentie hoeft niet overeen te komen met het exacte URL-pad. Hier volgt een voorbeeld van hoe het opzoeken van referenties werkt. Als we pad s3://10.193.16.183:9000/myS3Bucket/sqlbackups/AdventureWorks2022.bak
moeten opvragen, worden de volgende referentienamen getest:
s3://10.193.16.183:8787/myS3Bucket/sqlbackups/AdventureWorks2022.bak
s3://10.193.16.183:8787/myS3Bucket/sqlbackups
s3://10.193.16.183:8787/myS3Bucket
Als er meerdere referenties zijn die overeenkomen met de zoekopdracht, zoals de specifiekere s3://10.193.16.183:8787/myS3Bucket/sqlbackups
en de meer algemene s3://10.193.16.183:8787/myS3Bucket
, kiest u de meest specifieke. Hiermee kunt u gedetailleerdere toegangsbeheer instellen op directoryniveau voor welke mappen toegankelijk zijn vanuit SQL Server.
Niet-ondersteunde optie FILE_SNAPSHOT
Momenteel wordt de optie BACKUP TSQL FILE_SNAPSHOT niet ondersteund voor S3-compatibele objectopslag. Dit is een azure Blob Storage-specifieke optie.
Als de gebruiker bijvoorbeeld de volgende Transact-SQL uitvoert:
BACKUP DATABASE AdventureWorks2022
TO URL = 's3://<your-endpoint>/myS3Bucket/sqlbackups/AdventureWorks2022.bak'
WITH FILE_SNAPSHOT;
Het volgende foutbericht wordt geretourneerd:
Msg 3073, Level 16, State 1, Line 62
The option WITH FILE_SNAPSHOT is only permitted if all database files are in Azure Storage.
Msg 3013, Level 16, State 1, Line 62
BACKUP DATABASE is terminating abnormally.
Back-upstrook van meer dan 100 GB
Op dit moment mag de grootte van één back-upbestand dat door klanten is gemaakt in S3-compatibele objectopslag tijdens een back-up, niet groter zijn dan 100 GB per bestand, met behulp van de standaard-MAXTRANSFERSIZE
. Als de back-upstrip hoger is dan 100 GB, genereert de T-SQL-syntaxisinstructie van de back-up het volgende foutbericht:
Msg 3202, Level 16, State 1, Line 161
Write on 's3://<endpoint>:<port>/<bucket>/<path>/<db_name>.bak' failed: 87(The parameter is incorrect.)
Msg 3013, Level 16, State 1, Line 161
BACKUP DATABASE is terminating abnormally.
De huidige richtlijnen voor het maken van back-ups van grote databases van gebruikers maken gebruik van meerdere strepen voor de databaseback-up, elk van toegestane grootten kleiner dan of gelijk aan 100 GB. De BACKUP T-SQL ondersteunt het stripen van maximaal 64 URL's, bijvoorbeeld:
BACKUP DATABASE AdventureWorks2022
TO URL = 's3://<endpoint>:<port>/<bucket>/<path>/<db_file>_1.bak',
URL = 's3://<endpoint>:<port>/<bucket>/<path>/<db_file>_2.bak';
Een alternatieve optie voor gebruikers is het gebruik van de optie COMPRESSIE:
BACKUP DATABASE AdventureWorks2022
TO URL = 's3://<your-endpoint>/myS3Bucket/sqlbackups/AdventureWorks2022.bak'
WITH COMPRESSION;
Maximale lengte van URL
De totale URL-lengte is beperkt tot 259 bytes door de back-up- en herstelengine. Dit betekent dat s3://hostname/objectkey
niet langer mag zijn dan 259 tekens. Afgezien van s3://
kan de gebruiker de padlengte (hostnaam + objectsleutel) tot 259 – 5 = 254 tekens invoeren. Raadpleeg SQL Server Backup naar URL - SQL Server. De T-SQL-syntaxisinstructie van de backup geeft het volgende foutbericht:
SQL Server has a maximum limit of 259 characters for a backup device name. The BACKUP TO URL consumes 36 characters for the required elements used to specify the URL - 'https://.blob.core.windows.net//.bak', leaving 223 characters for account, container, and blob names put together'
Klok-afwijkingscorrectie
De S3-opslag kan de verbinding weigeren, waardoor de fout InvalidSignatureException wordt geretourneerd naar SQL Server wanneer het tijdsverschil tussen SQL Host en S3-server groter is dan 15 minuten. Op SQL Server wordt het weergegeven als:
Msg 3201, Level 16, State 1, Line 28
Cannot open backup device '<path>'. Operating system error 5(Access is denied.).
Msg 3013, Level 16, State 1, Line 28
BACKUP DATABASE is terminating abnormally.
Ondersteuning voor SQL Server op Linux
SQL Server maakt gebruik van WinHttp
om clients van de HTTP REST API's die het gebruikt te implementeren. Het is afhankelijk van het certificaatarchief van het besturingssysteem voor validaties van de TLS-certificaten die worden gepresenteerd door het HTTP(s)-eindpunt. SQL Server op Linux delegeert echter de certificaatvalidatie naar SQLPAL, waarmee de HTTPS-certificaten van de eindpunten worden gevalideerd met het certificaat dat is verzonden met PAL. Door de klant verstrekte zelfondertekende certificaten kunnen dus niet worden gebruikt in Linux voor HTTPS-validatie.
Tijdens het maken van een back-up/herstel krijgt de klant het volgende foutbericht op Linux:
Msg 3201, Level 16, State 1, Line 20
Cannot open backup device 's3://<endpoint>/<bucket>/testingDB.bak'. Operating system error 12175(failed to retrieve text for this error. Reason: 15105).
Msg 3013, Level 16, State 1, Line 20
BACKUP DATABASE is terminating abnormally.
Om dit probleem te omzeilen, moet de volgende vooraf gedefinieerde locatie worden aangemaakt: /var/opt/mssql/security/ca-certificates
. Plaats zelfondertekende certificaten of certificaten die niet worden verzonden met PAL op deze locatie. SQL Server leest de certificaten uit de map tijdens het opstarten en voegt ze toe aan het PAL-vertrouwensarchief.
Op deze locatie kunnen maximaal 50 bestanden worden opgeslagen, als de map niet is gemaakt, wordt in het FOUTENlogboek van SQL Server het volgende weergegeven:
2022-02-05 00:32:10.86 Server Installing Client TLS certificates to the store.
2022-02-05 00:32:10.88 Server Error searching first file in /var/opt/mssql/security/ca-certificates: 3(The system cannot find the path specified.)
Objectvergrendeling - het verwijderen van retentie wordt niet ondersteund
De SQL Server-back-up naar S3-compatibele objectopslagfunctie biedt geen ondersteuning voor Objectvergrendeling, ook wel de Verwijderbehoudfunctie genoemd. Objectvergrendeling voorkomt dat bestanden worden verwijderd of overschreven voor de duur van de bewaarperiode.
Voor de bucket- en maplocatie waarop uw back-upbewerking betrekking heeft, mag Objectvergrendeling niet zijn ingeschakeld. Als deze functie is ingeschakeld en geconfigureerd in de S3-compatibele objectopslag, mislukt de back-upbewerking met het volgende bericht:
Msg 3202, Level 16, State 1, Line 13
Write on 's3://<your-endpoint>/nonExistingBucket/AdventureWorks2022.bak' failed: 87 (The parameter is incorrect).
Msg 3013, Level 16, State 1, Line 13
BACKUP DATABASE is terminating abnormally.