Eventi
15 set, 06 - 17 set, 15
Il miglior evento di apprendimento guidato dalla community SQL. Sept 2025. Risparmia €200 con codice FABLEARN.
Get registeredQuesto browser non è più supportato.
Esegui l'aggiornamento a Microsoft Edge per sfruttare i vantaggi di funzionalità più recenti, aggiornamenti della sicurezza e supporto tecnico.
Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a: SQL Server 2022 (16.x)
Questo articolo introduce i concetti, i requisiti e i componenti necessari per usare l'archiviazione oggetti compatibile con S3 come destinazione di backup. La funzionalità di backup e ripristino è concettualmente simile all'uso del backup di SQL Server nell'URL di Archiviazione BLOB di Azure come tipo di dispositivo di backup.
Per informazioni sulle piattaforme supportate, vedere Provider di archiviazione oggetti compatibile con S3.
SQL Server 2022 (16.x) introduce l'integrazione dell'archiviazione di oggetti nella piattaforma dati, permettendoti di integrare SQL Server con l'archiviazione di oggetti compatibile con S3, oltre ad Archiviazione di Azure. Per offrire questa integrazione, SQL Server supporta un connettore S3, che usa l'API REST S3 per la connessione a qualsiasi provider di archiviazione di oggetti compatibile con S3. SQL Server 2022 (16.x) estende la sintassi esistente di BACKUP/RESTORE TO/FROM URL aggiungendo il supporto per il nuovo connettore S3 tramite l'API REST.
Gli URL che puntano a risorse compatibili con S3 sono preceduti da un prefisso s3://
che indica che viene usato il connettore S3. Gli URL che iniziano con s3://
presuppongono sempre che il protocollo sottostante sia https
.
Per archiviare i dati, il provider di archiviazione oggetti compatibile con S3 deve suddividere i file in più blocchi denominati parti, in modo analogo ai BLOB in blocchi in Archiviazione BLOB di Azure.
Ogni file può essere suddiviso fino a 10.000 parti, le dimensioni delle quali vanno dai 5 MB ai 20 MB; questo intervallo è controllato dal comando T-SQL BACKUP tramite il parametro MAXTRANSFERSIZE. Il valore predefinito di MAXTRANSFERSIZE
è 10 MB, pertanto la dimensione predefinita di ogni parte è 10 MB. Sebbene questo valore specifichi la dimensione massima del trasferimento, non garantisce che ogni parte inviata sia di 10 MB. La dimensione della parte è influenzata dall'adiacenza dei dati. Ad esempio, se sono presenti 4 MB di dati adiacenti a 2 MB di dati, vengono inviati 6 MB dopo aver raggiunto la parte minima delle dimensioni di 5 MB. In alternativa, se sono presenti 12 MB di dat adiacenti, i dati fino alle dimensioni massime (10 MB) vengono inviati e i rimanenti 2 MB vengono inviati nella parte successiva. Il connettore S3 tenta sempre di inviare le dimensioni massime dei dati possibili, ma non supera mai il MAXTRANSFERSIZE
valore.
La dimensione massima di un file supportata è determinata dal risultato di 10.000 parti * MAXTRANSFERSIZE
. Se è necessario eseguire il backup di un file più grande, deve essere suddiviso o distribuito in fino a 64 URL. La dimensione massima finale supportata di un file è di 10.000 parti * * MAXTRANSFERSIZE
URL.
Nota
L'uso di COMPRESSION è necessario per modificare i valori MAXTRANSFERSIZE
.
L'endpoint S3 deve essere configurato come segue:
Access Key ID
e Secret Key ID
. È necessario eseguire l'autenticazione a fronte dell'endpoint S3.Per connettere SQL Server all'archiviazione oggetti compatibile con S3, è necessario stabilire due set di autorizzazioni, uno in SQL Server e anche nel livello di archiviazione.
Su SQL Server l'account utente usato per eseguire i comandi BACKUP o RESTORE deve essere associato il ruolo del database db_backupoperator con autorizzazioni Modifica qualsiasi credenziale .
Nel livello di archiviazione:
Access Key ID
) deve avere entrambe le autorizzazioni ListBucket e WriteOnly.Se il database da ripristinare non esiste, l'utente deve disporre CREATE DATABASE
delle autorizzazioni per poter eseguire RESTORE. Se il database esiste, le autorizzazioni per l'istruzione RESTORE vengono assegnate per impostazione predefinita ai membri dei ruoli predefiniti del server sysadmin
e dbcreator
e al proprietario (dbo
) del database.
Le autorizzazioni per l'istruzione RESTORE vengono assegnate ai ruoli in cui le informazioni sull'appartenenza sono sempre disponibili per il server. Poiché l'appartenenza al ruolo predefinito del database può essere controllata solo quando il database è accessibile e non danneggiato, che non è sempre il caso in cui viene eseguito RESTORE, i membri del ruolo predefinito del db_owner
database non dispongono delle autorizzazioni RESTORE.
Nel livello di archiviazione:
Access Key ID
) deve avere entrambe le autorizzazioni ListBucket e ReadOnly.Panoramica generale delle funzionalità supportate per BACKUP
e RESTORE
:
MAXTRANSFERSIZE
impostato su 20 MB).MAXTRANSFERSIZE
viene determinato dal valore assegnato durante la fase di backup.WITH CREDENTIAL
è supportato.REGION
è supportato e il valore predefinito è us-east-1
.MAXTRANSFERSIZE
è compreso tra 5 MB e 20 MB. 10 MB è il valore predefinito per il connettore S3.Opzioni WITH |
Endpoint S3 | Note |
---|---|---|
BLOCKSIZE |
Sì |
MAXTRANSFERSIZE determina le dimensioni della parte. |
BUFFERCOUNT |
Sì | |
COMPRESSION |
Sì | |
COPY_ONLY |
Sì | |
CREDENTIAL |
Sì | |
DESCRIPTION |
Sì | |
DIFFERENTIAL |
Sì | |
ENCRYPTION |
Sì | |
FILE_SNAPSHOT |
NO | |
MAXTRANSFERSIZE |
Sì | Da 5 MB (5.242.880 byte) a 20 MB (20.971.520 byte), il valore predefinito è 10 MB (10.485.760 byte). |
MEDIADESCRIPTION |
Sì | |
MEDIANAME |
Sì | |
MIRROR TO |
Sì | Funziona solo con un altro URL, MIRROR con URL e DISK non è supportato. |
NAME |
Sì | |
NOFORMAT / FORMAT |
Sì | |
NOINIT / INIT |
NO | L'aggiunta non è supportata. Per sovrascrivere un backup, usare WITH FORMAT . |
NO_CHECKSUM / CHECKSUM |
Sì | |
NO_TRUNCATE |
Sì | |
REGION |
Sì | Il valore predefinito è us-east-1 . Deve essere usato con BACKUP_OPTIONS . |
STATS |
Sì |
Opzioni WITH |
Endpoint S3 | Note |
---|---|---|
BLOCKSIZE |
Sì |
MAXTRANSFERSIZE determina le dimensioni della parte. |
BUFFERCOUNT |
NO | |
CHECKSUM / NO_CHECKSUM |
Sì | |
CREDENTIAL |
Sì | |
ENABLE_BROKER / ERROR_BROKER_CONVERSATIONS / NEW_BROKER |
Sì | |
FILE |
NO | Nomi logici non supportati con RESTORE FROM URL . |
FILESTREAM |
Sì | |
KEEP_CDC |
Sì | |
KEEP_REPLICATION |
Sì | |
LOADHISTORY |
Sì | |
MAXTRANSFERSIZE |
NO | |
MEDIANAME |
Sì | |
MEDIAPASSWORD |
NO | Obbligatorio per alcuni backup eseguiti nelle versioni precedenti a SQL Server 2012. |
MOVE |
Sì | |
PARTIAL |
Sì | |
PASSWORD |
NO | Obbligatorio per alcuni backup eseguiti nelle versioni precedenti a SQL Server 2012. |
RECOVERY / NORECOVERY / STANDBY |
Sì | |
REGION |
Sì | Il valore predefinito è us-east-1 . Deve essere usato con RESTORE_OPTIONS . |
REPLACE |
Sì | |
RESTART |
Sì | |
RESTRICTED_USER |
Sì | |
REWIND / NOREWIND |
NO | |
STATS |
Sì | |
STOP_ON_ERROR / CONTINUE_AFTER_ERROR |
Sì | |
STOPAT / STOPATMARK / STOPBEFOREMARK |
Sì | |
UNLOAD / NOUNLOAD |
NO |
Il provider di archiviazione oggetti compatibile con S3 può offrire la possibilità di determinare un'area specifica per la posizione del bucket. L'uso di questo parametro opzionale può offrire maggiore flessibilità poiché può essere specificata l'area a cui appartiene un determinato bucket. Questo parametro richiede l'uso di WITH
insieme a BACKUP_OPTIONS
o RESTORE_OPTIONS
. Queste opzioni richiedono che il valore venga dichiarato in formato JSON. Ciò consente scenari in cui un provider di archiviazione compatibile con S3 può avere lo stesso URL universale, ma può essere distribuito in diverse aree. In questo caso, il comando di backup o ripristino punta alle aree specificate senza la necessità di modificare l'URL.
Se non viene dichiarato alcun valore, us-east-1
viene assegnato come predefinito.
Esempi di backup:
WITH BACKUP_OPTIONS = '{"s3": {"region":"us-west-1"}}'
Esempi di ripristino:
WITH RESTORE_OPTIONS = '{"s3": {"region":"us-west-1"}}'
SQL Server usa WinHttp
per implementare il client delle API REST HTTP usate. Si basa sull'archivio certificati del sistema operativo per le convalide dei certificati TLS presentati dall'endpoint http(s)
. Tuttavia, su SQL Server in Linux la CA deve essere inserita in un percorso predefinito da creare in /var/opt/mssql/security/ca-certificates
, solo i primi 50 certificati possono essere archiviati e supportati in questa cartella. La CA deve essere eseguita, prima dell'avvio del processo di SQL Server.
SQL Server legge i certificati dalla cartella durante l'avvio e li aggiunge all'archivio attendibilità.
Solo l'utente con privilegi avanzati deve essere in grado di scrivere nella cartella, mentre l'utente mssql
deve essere in grado di leggere.
http
non è supportato. I clienti sono responsabili della configurazione dell'host S3 con un URL https
e questo endpoint viene convalidato da un certificato installato nell'host del sistema operativo di SQL Server.Di seguito sono riportate le limitazioni correnti di backup e ripristino con l'archiviazione di oggetti compatibile con S3:
s3://
. Perciò, il limite di utilizzo è di 254 caratteri. È tuttavia consigliabile attenersi a un limite di 200 caratteri per consentire la possibile introduzione dei parametri di query.:
.Il backup su S3 supporta l'URL da scrivere, sia nella modalità PATH style, sia nella modalità Virtual Host style.
Esempio di stile percorso: s3://<endpoint>:<port>/<bucket>/<backup_file_name>
Esempio di host virtuale: s3://<bucket>.<domain>/<backup_file_name>
'S3 Access Key'
quando si usa il connettore S3.Usare CREATE CREDENTIAL per creare credenziali a livello di server per l'autenticazione con l'endpoint di archiviazione oggetti compatibile con S3.
USE [master];
CREATE CREDENTIAL [s3://<endpoint>:<port>/<bucket>]
WITH
IDENTITY = 'S3 Access Key',
SECRET = '<AccessKeyID>:<SecretKeyID>';
GO
BACKUP DATABASE [SQLTestDB]
TO URL = 's3://<endpoint>:<port>/<bucket>/SQLTestDB.bak'
WITH FORMAT /* overwrite any existing backup sets */
, STATS = 10
, COMPRESSION;
AWS S3 supporta tuttavia due diversi standard di URL.
S3://<BUCKET_NAME>.S3.<REGION>.AMAZONAWS.COM/<FOLDER>
(predefinito)S3://S3.<REGION>.AMAZONAWS.COM/<BUCKET_NAME>/<FOLDER>
Esistono più approcci per creare correttamente delle credenziali per AWS S3.
-- S3 bucket name: datavirtualizationsample
-- S3 bucket region: us-west-2
-- S3 bucket folder: backup
CREATE CREDENTIAL [s3://datavirtualizationsample.s3.us-west-2.amazonaws.com/backup]
WITH
IDENTITY = 'S3 Access Key'
, SECRET = 'accesskey:secretkey';
GO
BACKUP DATABASE [AdventureWorks2022]
TO URL = 's3://datavirtualizationsample.s3.us-west-2.amazonaws.com/backup/AdventureWorks2022.bak'
WITH COMPRESSION, FORMAT, MAXTRANSFERSIZE = 20971520;
GO
Oppure
CREATE CREDENTIAL [s3://s3.us-west-2.amazonaws.com/datavirtualizationsample/backup]
WITH
IDENTITY = 'S3 Access Key'
, SECRET = 'accesskey:secretkey';
GO
BACKUP DATABASE [AdventureWorks2022]
TO URL = 's3://s3.us-west-2.amazonaws.com/datavirtualizationsample/backup/AdventureWorks2022.bak'
WITH COMPRESSION, FORMAT, MAXTRANSFERSIZE = 20971520;
GO
Nell'esempio seguente viene eseguito un backup completo del database nell'endpoint di archiviazione oggetti, con striping su più file:
BACKUP DATABASE <db_name>
TO URL = 's3://<endpoint>:<port>/<bucket>/<database>_01.bak'
, URL = 's3://<endpoint>:<port>/<bucket>/<database>_02.bak'
, URL = 's3://<endpoint>:<port>/<bucket>/<database>_03.bak'
--
, URL = 's3://<endpoint>:<port>/<bucket>/<database>_64.bak'
WITH FORMAT -- overwrite
, STATS = 10
, COMPRESSION;
Nell'esempio seguente viene eseguito un ripristino del database dal percorso dell'endpoint di archiviazione oggetti:
RESTORE DATABASE <db_name>
FROM URL = 's3://<endpoint>:<port>/<bucket>/<database>_01.bak'
, URL = 's3://<endpoint>:<port>/<bucket>/<database>_02.bak'
, URL = 's3://<endpoint>:<port>/<bucket>/<database>_03.bak'
--
, URL = 's3://<endpoint>:<port>/<bucket>/<database>_64.bak'
WITH REPLACE -- overwrite
, STATS = 10;
Nell'esempio seguente viene illustrato come eseguire il backup e il ripristino del database AdventureWorks2022
con crittografia, MAXTRANSFERSIZE
come 20 MB e compressione:
CREATE MASTER KEY ENCRYPTION BY PASSWORD = <password>;
GO
CREATE CERTIFICATE AdventureWorks2022Cert
WITH SUBJECT = 'AdventureWorks2022 Backup Certificate';
GO
-- Backup database
BACKUP DATABASE AdventureWorks2022
TO URL = 's3://<endpoint>:<port>/<bucket>/AdventureWorks2022_Encrypt.bak'
WITH FORMAT, MAXTRANSFERSIZE = 20971520, COMPRESSION,
ENCRYPTION (ALGORITHM = AES_256, SERVER CERTIFICATE = AdventureWorks2022Cert)
GO
-- Restore database
RESTORE DATABASE AdventureWorks2022
FROM URL = 's3://<endpoint>:<port>/<bucket>/AdventureWorks2022_Encrypt.bak'
WITH REPLACE
Nell'esempio seguente viene illustrato come eseguire il backup e il ripristino del database AdventureWorks2022
usando REGION_OPTIONS
:
È possibile parametrizzare l'area all'interno di ogni comando BACKUP
/ RESTORE
. Si noti la stringa di area specifica di S3 in BACKUP_OPTIONS
e RESTORE_OPTIONS
, ad esempio '{"s3": {"region":"us-west-2"}}'
. L'area predefinita è us-east-1
. Un semplice esempio:
-- Backup Database
BACKUP DATABASE AdventureWorks2022
TO URL = 's3://<endpoint>:<port>/<bucket>/AdventureWorks2022.bak'
WITH BACKUP_OPTIONS = '{"s3": {"region":"us-west-2"}}'
-- Restore Database
RESTORE DATABASE AdventureWorks2022
FROM URL = 's3://<endpoint>:<port>/<bucket>/AdventureWorks2022.bak'
WITH
MOVE 'AdventureWorks2022'
TO 'C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\DATA\AdventureWorks2022.mdf'
, MOVE 'AdventureWorks2022_log'
TO 'C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\DATA\AdventureWorks2022.ldf'
, RESTORE_OPTIONS = '{"s3": {"region":"us-west-2"}}'
Ad esempio:
-- S3 bucket name: datavirtualizationsample
-- S3 bucket region: us-west-2
-- S3 bucket folder: backup
CREATE CREDENTIAL [s3://datavirtualizationsample.s3.amazonaws.com/backup]
WITH
IDENTITY = 'S3 Access Key'
, SECRET = 'accesskey:secretkey';
GO
BACKUP DATABASE [AdventureWorks2022]
TO URL = 's3://datavirtualizationsample.s3.amazonaws.com/backup/AdventureWorks2022.bak'
WITH
BACKUP_OPTIONS = '{"s3": {"region":"us-west-2"}}' -- REGION AS PARAMETER)
, COMPRESSION, FORMAT, MAXTRANSFERSIZE = 20971520;
GO
RESTORE DATABASE AdventureWorks2022_1
FROM URL = 's3://datavirtualizationsample.s3.amazonaws.com/backup/AdventureWorks2022.bak'
WITH
MOVE 'AdventureWorks2022'
TO 'C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\DATA\AdventureWorks2022_1.mdf'
, MOVE 'AdventureWorks2022_log'
TO 'C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\DATA\AdventureWorks2022_1.ldf'
, STATS = 10, RECOVERY
, REPLACE, RESTORE_OPTIONS = '{"s3": {"region":"us-west-2"}}'; -- REGION AS PARAMETER)
GO
Eventi
15 set, 06 - 17 set, 15
Il miglior evento di apprendimento guidato dalla community SQL. Sept 2025. Risparmia €200 con codice FABLEARN.
Get registered