Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Cette rubrique présente les concepts, exigences et composants nécessaires pour utiliser le service stockage Blob Azure comme destination de sauvegarde. La fonctionnalité de sauvegarde et de restauration est identique ou similaire à l’utilisation de DISK ou DE TAPE, avec quelques différences. Les différences, ainsi que toutes les exceptions notables, et quelques exemples de code sont inclus dans cette rubrique.
Exigences, composants et concepts
Dans cette section :
Utilisation de la tâche de sauvegarde dans SQL Server Management Studio
Sauvegarde de SQL Server vers une URL avec l’Assistant Plan de maintenance
Restauration à partir du stockage Azure à l’aide de SQL Server Management Studio
Sécurité
Voici quelques considérations et exigences de sécurité lors de la sauvegarde ou de la restauration à partir des services de stockage Blob Azure.
Lors de la création d’un conteneur pour le service stockage Blob Azure, nous vous recommandons de définir l’accès privé. La définition de l’accès privé restreint l’accès aux utilisateurs ou aux comptes en mesure de fournir les informations nécessaires pour s’authentifier auprès du compte Azure.
Important
SQL Server nécessite que le nom du compte Azure et l’authentification par clé d’accès soient stockés dans des informations d’identification SQL Server. Ces informations sont utilisées pour s’authentifier auprès du compte Azure lorsqu’elles effectuent des opérations de sauvegarde ou de restauration.
Le compte d’utilisateur utilisé pour émettre des commandes BACKUP ou RESTORE doit être au rôle de base de données db_backup operator avec les autorisations Alter any credential.
Présentation des principaux composants et concepts
Les deux sections suivantes présentent le service Stockage Blob Azure et les composants SQL Server utilisés lors de la sauvegarde ou de la restauration à partir du service stockage Blob Azure. Il est important de comprendre les composants et l’interaction entre eux pour effectuer une sauvegarde ou une restauration à partir du service stockage Blob Azure.
La création d’un compte Azure est la première étape de ce processus. SQL Server utilise le nom du compte de stockage Azure et ses valeurs de clé d’accès pour authentifier et écrire et lire des objets blob dans le service de stockage. Les informations d’identification SQL Server stockent ces informations d’authentification et les utilisent durant les opérations de sauvegarde ou de restauration. Pour obtenir une procédure pas à pas complète de la création d’un compte de stockage et de l’exécution d’une restauration simple, consultez Tutoriel Utilisation du service stockage Azure pour la sauvegarde et la restauration SQL Server.
le
Service Stockage Blob Azure
Compte de stockage : Le compte de stockage est le point de départ de tous les services de stockage. Pour accéder au service Stockage Blob Azure, commencez par créer un compte de stockage Azure. Le nom du compte de stockage et ses propriétés de clé d’accès sont nécessaires pour s’authentifier auprès du service Stockage Blob Azure et de ses composants.
Conteneur: Un conteneur fournit un regroupement d’un ensemble d’objets blob et peut stocker un nombre illimité d’objets blob. Pour écrire une sauvegarde SQL Server dans le service Blob Azure, vous devez avoir au moins le conteneur racine créé.
BLOB: Fichier de n’importe quel type et taille. Il existe deux types d’objets blob qui peuvent être stockés dans le service de stockage Azure Blob : les objets blob de bloc et de page. La sauvegarde SQL Server utilise des objets blob de pages comme type de Blob. Les objets blob sont adressables au format d’URL suivant : https://< storage account.blob.core.windows.net/>< container>/<blob>
Pour plus d’informations sur le service Stockage Blob Azure, consultez Guide pratique pour utiliser le service Stockage Blob Azure
Pour plus d’informations sur les blobs, consultez Présentation des objets blob de blocs et des objets blob de pages
Composants SQL Server
URL: Une URL spécifie un URI (Uniform Resource Identifier) dans un fichier de sauvegarde unique. L’URL est utilisée pour fournir l’emplacement et le nom du fichier de sauvegarde SQL Server. Dans cette implémentation, la seule URL valide est une URL qui pointe vers un objet blob de pages dans un compte de stockage Azure. L’URL doit pointer vers un objet blob réel, pas seulement un conteneur. Si l’objet blob n’existe pas, il est créé. Si un objet blob existant est spécifié, BACKUP échoue, sauf si l’option « WITH FORMAT » est spécifiée.
Avertissement
Si vous choisissez de copier et de charger un fichier de sauvegarde dans le service Stockage Blob Azure, utilisez le blob de page comme option de stockage. Les restaurations à partir d'objets blob de blocs ne sont pas prises en charge. Une restauration à partir d'un type d'objet blob de blocs échoue avec une erreur.
Voici un exemple de valeur d’URL : http[s]://ACCOUNTNAME.Blob.core.windows.net/< CONTAINER>/<FILENAME.bak>. HTTPS n’est pas obligatoire, mais il est recommandé.
Credential: Les informations d’identification SQL Server sont un objet utilisé pour stocker les informations d’authentification requises pour se connecter à une ressource en dehors de SQL Server. Ici, les processus de sauvegarde et de restauration SQL Server utilisent des informations d’identification pour s’authentifier auprès du service stockage Blob Azure. Les informations d’identification stockent le nom du compte de stockage et les valeurs de clé d’accès du compte de stockage. Une fois les informations d’identification créées, elles doivent être spécifiées dans l’option WITH CREDENTIAL lors de l’émission des instructions BACKUP/RESTORE. Pour plus d’informations sur la façon d’afficher, copier ou régénérer des clés d’accès de compte de stockage, consultez Clés d’accès au compte de stockage.
Pour obtenir des instructions pas à pas sur la création d’informations d’identification SQL Server, consultez Créer un exemple d’informations d’identification plus loin dans cette rubrique.
Pour plus d’informations générales sur les informations d’identification, consultez Informations d’identification
Pour plus d’informations, sur d’autres exemples où les informations d’identification sont utilisées, consultez Créer un proxy SQL Server Agent.
Limites
La sauvegarde vers le stockage Premium n’est pas prise en charge.
La taille maximale de sauvegarde prise en charge est de 1 To.
Vous pouvez émettre des instructions de sauvegarde ou de restauration à l’aide des applets de commande TSQL, SMO ou PowerShell. Une sauvegarde vers ou une restauration à partir du service stockage Blob Azure à l’aide de l’Assistant Sauvegarde ou restauration de SQL Server Management Studio n’est actuellement pas activée.
La création d’un nom d’appareil logique n’est pas prise en charge. Par conséquent, l’ajout d’URL en tant qu’appareil de sauvegarde à l’aide de sp_dumpdevice ou via SQL Server Management Studio n’est pas pris en charge.
L’ajout à des objets blob de sauvegarde existants n’est pas pris en charge. Les sauvegardes sur un objet blob existant ne peuvent être remplacées qu’à l’aide de l’option WITH FORMAT.
La sauvegarde vers plusieurs objets blob dans une seule opération de sauvegarde n’est pas prise en charge. Par exemple, la commande suivante retourne une erreur :
BACKUP DATABASE AdventureWorks2012 TO URL = 'https://mystorageaccount.blob.core.windows.net/mycontainer/AdventureWorks2012_1.bak' URL = 'https://mystorageaccount.blob.core.windows.net/mycontainer/AdventureWorks2012_2.bak' WITH CREDENTIAL = 'mycredential' ,STATS = 5; GOLa spécification d’une taille de bloc avec
BACKUPn’est pas prise en charge.La spécification n’est
MAXTRANSFERSIZEpas prise en charge.Spécification des options d’ensemble de sauvegarde et
RETAINDAYSEXPIREDATEnon prises en charge.SQL Server est soumis à une limite de 259 caractères pour le nom d'une unité de sauvegarde. BACKUP TO URL utilise 36 caractères pour les éléments requis utilisés pour spécifier l’URL « https://.blob.core.windows.net//.bak », ce qui laisse 223 caractères pour les noms de compte, de conteneur et d’objet blob réunis.
Prise en charge des instructions de sauvegarde/restauration
| Backup/Restore, instruction | Soutenu | Exceptions | Commentaires |
| SAUVEGARDE | ✓ | BLOCKSIZE et MAXTRANSFERSIZE ne sont pas pris en charge. | Nécessite WITH CREDENTIAL spécifié |
| RESTAURER | ✓ | Nécessite WITH CREDENTIAL spécifié | |
| RESTAURER FILELISTONLY | ✓ | Nécessite la spécification de WITH CREDENTIAL (AVEC IDENTIFIANTS) | |
| RESTORER HEADERONLY | ✓ | Nécessite spécification des identifiants | |
| RESTORER LABELONLY | ✓ | Nécessite que WITH CREDENTIAL spécifié | |
| RESTAURER VERIFYONLY | ✓ | Nécessite que l'identifiant soit spécifié | |
| RESTAURER REWINDONLY | ✓ |
Pour obtenir des informations générales sur les instructions de sauvegarde, consultez BACKUP (Transact-SQL).
Pour obtenir des informations générales sur les instructions de restauration, consultez RESTORE (Transact-SQL).
Prise en charge des arguments de sauvegarde
| Raisonnement | Soutenu | Exception | Commentaires |
| BASE DE DONNÉES | ✓ | ||
| RAPPORT | ✓ | ||
| TO (URL) | ✓ | Contrairement à DISK et TAPE, l’URL ne prend pas en charge la spécification ou la création d’un nom logique. | Cet argument est utilisé pour spécifier le chemin d’URL du fichier de sauvegarde. |
| MIROIR VERS | ✓ | ||
| AVEC LES OPTIONS : | |||
| INFORMATIONS D'IDENTIFICATION | ✓ | WITH CREDENTIAL est uniquement pris en charge lors de l’utilisation de l’option BACKUP TO URL pour sauvegarder dans le service stockage Blob Azure. | |
| DIFFÉRENTIEL | ✓ | ||
| Copier uniquement | ✓ | ||
| COMPRESSION|SANS_COMPRESSION | ✓ | ||
| Description | ✓ | ||
| NOM | ✓ | ||
| DATE D'EXPIRATION | JOURS DE CONSERVATION | ✓ | ||
| NOINIT | INIT | ✓ | Cette option est ignorée si elle est utilisée. L’ajout à des objets blob n’est pas possible. Pour remplacer une sauvegarde, utilisez l’argument FORMAT. |
|
| NOSKIP | PASSER | ✓ | ||
| NOFORMAT | FORMAT | ✓ | Cette option est ignorée si elle est utilisée. Une sauvegarde effectuée sur un objet blob existant échoue, sauf si WITH FORMAT est spécifié. L’objet blob existant est remplacé lorsque WITH FORMAT est spécifié. |
|
| DESCRIPTION MÉDIA | ✓ | ||
| MEDIANAME | ✓ | ||
| TAILLE DE BLOC | ✓ | ||
| BUFFERCOUNT | ✓ | ||
| MAXTRANSFERSIZE | ✓ | ||
| NO_CHECKSUM | SOMME DE CONTRÔLE | ✓ | ||
| ARRÊTER_EN_CAS_D_ERREUR | CONTINUER_APRÈS_ERREUR | ✓ | ||
| STATS | ✓ | ||
| REWIND | NOREWIND | ✓ | ||
| UNLOAD | NOUNLOAD | ✓ | ||
| NORECOVERY | ATTENTE | ✓ | ||
| NO_TRUNCATE | ✓ |
Pour plus d’informations sur les arguments de sauvegarde, consultez BACKUP (Transact-SQL).
Prise en charge des arguments de restauration
| Raisonnement | Soutenu | Exceptions | Commentaires |
| BASE DE DONNÉES | ✓ | ||
| RAPPORT | ✓ | ||
| DE (URL) | ✓ | L’argument FROM URL est utilisé pour spécifier le chemin d’URL du fichier de sauvegarde. | |
| OPTIONS WITH : | |||
| INFORMATIONS D'IDENTIFICATION | ✓ | L'utilisation de WITH CREDENTIAL est uniquement prise en charge lors de l'utilisation de l'option RESTORE FROM URL pour restaurer à partir du service de stockage Blob Azure. | |
| PARTIEL | ✓ | ||
| RECOVERY | NORECOVERY | VEILLE | ✓ | ||
| CHARGERHISTORIQUE | ✓ | ||
| BOUGER | ✓ | ||
| REMPLACER | ✓ | ||
| REDÉMARRER | ✓ | ||
| UTILISATEUR_RESTREINT | ✓ | ||
| FICHIER | ✓ | ||
| MOT DE PASSE | ✓ | ||
| MEDIANAME | ✓ | ||
| MEDIAPASSWORD | ✓ | ||
| TAILLE DE BLOC | ✓ | ||
| BUFFERCOUNT | ✓ | ||
| MAXTRANSFERSIZE | ✓ | ||
| SOMME DE CONTRÔLE | PAS DE SOMME DE CONTRÔLE | ✓ | ||
| ARRÊTER_EN_CAS_D_ERREUR | CONTINUER_APRÈS_ERREUR | ✓ | ||
| FLUX DE FICHIER | ✓ | ||
| STATS | ✓ | ||
| REWIND | NOREWIND | ✓ | ||
| UNLOAD | NOUNLOAD | ✓ | ||
| KEEP_REPLICATION | ✓ | ||
| KEEP_CDC | ✓ | ||
| ENABLE_BROKER | ERROR_BROKER_CONVERSATIONS | NEW_BROKER | ✓ | ||
| STOPAT | STOPATMARK | STOPBEFOREMARK | ✓ |
Pour plus d’informations sur les arguments Restore, consultez arguments RESTORE (Transact-SQL).
Utilisation de la tâche de sauvegarde dans SQL Server Management Studio
La tâche de sauvegarde dans SQL Server Management Studio a été améliorée pour inclure l’URL comme l’une des options de destination et d’autres objets de prise en charge nécessaires à la sauvegarde dans le stockage Azure, comme les informations d’identification SQL.
Les étapes suivantes décrivent les modifications apportées à la tâche sauvegarder la base de données pour permettre la sauvegarde dans le stockage Azure.
Démarrez SQL Server Management Studio et connectez-vous à l’instance SQL Server. Sélectionnez une base de données à sauvegarder, puis cliquez avec le bouton droit sur Tâches, puis sélectionnez Sauvegarder... La boîte de dialogue Sauvegarder la base de données s’ouvre.
Dans la page générale, l’option d’URL est utilisée pour créer une sauvegarde dans le stockage Azure. Lorsque vous sélectionnez cette option, vous voyez d’autres options activées sur cette page :
Nom du fichier : Nom du fichier de sauvegarde.
Informations d’identification SQL : Vous pouvez spécifier des informations d’identification SQL Server existantes ou en créer une nouvelle en cliquant sur Créer en regard de la zone Informations d’identification SQL.
Important
La boîte de dialogue qui s’ouvre lorsque vous cliquez sur Créer nécessite un certificat de gestion ou le profil de publication de l’abonnement. SQL Server prend actuellement en charge la version 2.0 du profil de publication. Pour télécharger la version prise en charge du profil de publication, consultez Télécharger le profil de publication 2.0.
Si vous n’avez pas accès au certificat de gestion ou au profil de publication, vous pouvez créer des informations d’identification SQL en spécifiant le nom du compte de stockage et les informations de clé d’accès à l’aide de Transact-SQL ou de SQL Server Management Studio. Consultez l’exemple de code dans la section Créer des informations d’identification pour créer des informations d’identification à l’aide de Transact-SQL. Vous pouvez également utiliser SQL Server Management Studio, à partir de l’instance du moteur de base de données, cliquer avec le bouton droit sur Sécurité, sélectionner Nouveau et sélectionner Informations d’identification. Spécifiez le nom du compte de stockage pour l’identité et la clé d’accès dans le champ Mot de passe .
Conteneur de stockage Azure : Nom du conteneur de stockage Azure pour stocker les fichiers de sauvegarde.
Préfixe d’URL : Cette opération est générée automatiquement à l’aide des informations spécifiées dans les champs décrits dans les étapes précédentes. Si vous modifiez cette valeur manuellement, vérifiez qu’elle correspond aux autres informations que vous avez fournies précédemment. Par exemple, si vous modifiez l’URL de stockage, vérifiez que les informations d’identification SQL sont définies pour s’authentifier auprès du même compte de stockage.
Lorsque vous sélectionnez l’URL comme destination, certaines options de la page Options multimédias sont désactivées. Les rubriques suivantes contiennent plus d’informations sur la boîte de dialogue Sauvegarder la base de données :
Sauvegarder la base de données (page Général)
Sauvegarder la base de données (page Options du média)
Sauvegarder la base de données (page Options de sauvegarde)
Créer des informations d’identification - S’authentifier auprès du stockage Azure
Sauvegarde de SQL Server vers une URL avec l'Assistant du Plan de Maintenance
Comme pour la tâche de sauvegarde décrite précédemment, l’Assistant Plan de maintenance dans SQL Server Management Studio a été amélioré pour inclure l’URL comme l’une des options de destination et d’autres objets de prise en charge nécessaires à la sauvegarde vers le stockage Azure, comme les informations d’identification SQL. Pour plus d’informations, consultez la section Définir des tâches de sauvegarde dans l'Assistant Plan de Maintenance.
Restauration à partir du stockage Azure à l’aide de SQL Server Management Studio
Si vous restaurez une base de données, l’URL est incluse en tant qu’appareil à restaurer. Les étapes suivantes décrivent les modifications apportées à la tâche de restauration pour permettre la restauration à partir du stockage Azure :
Lorsque vous sélectionnez Appareils dans la page Général de la tâche de restauration dans SQL Server Management Studio, vous accédez à la boîte de dialogue Sélectionner des appareils de sauvegarde qui inclut l’URL comme type de support de sauvegarde.
Lorsque vous sélectionnez l’URL et cliquez sur Ajouter, la boîte de dialogue Se connecter au stockage Azure s’ouvre. Spécifiez les informations d’identification SQL pour l’authentification auprès du stockage Azure.
SQL Server se connecte ensuite au stockage Azure à l’aide des informations d’identification SQL que vous avez fournies et ouvre la boîte de dialogue Localiser le fichier de sauvegarde dans Azure . Les fichiers de sauvegarde résidant dans le stockage sont affichés sur cette page. Sélectionnez le fichier que vous souhaitez utiliser pour restaurer, puis cliquez sur OK. Vous revenez ainsi à la boîte de dialogue Sélectionner les périphériques de sauvegarde , puis cliquez sur OK dans cette boîte de dialogue pour revenir à la boîte de dialogue de restauration principale dans laquelle vous serez en mesure de terminer la restauration. Pour plus d’informations, consultez les rubriques suivantes :
Restaurer la base de données (page Général)
Exemples de code
Cette section contient les exemples suivants.
Création d’une sauvegarde complète de fichiers du groupe de fichiers principal
Création d’une sauvegarde différentielle de fichiers des groupes de fichiers principaux
Restauration d’une base de données et déplacement de fichiers
Créer un identifiant
L’exemple suivant crée des informations d’identification qui stockent les informations d’authentification de Azure Storage.
IF NOT EXISTS
(SELECT * FROM sys.credentials
WHERE credential_identity = 'mycredential')
CREATE CREDENTIAL mycredential WITH IDENTITY = 'mystorageaccount'
,SECRET = '<storage access key>' ;
// Connect to default sql server instance on local machine
Server server = new Server(".");
string identity = "mystorageaccount";
string secret = "<storage access key>";
// Create a Credential
string credentialName = "mycredential";
Credential credential = new Credential(server, credentialName);
credential.Create(identity, secret);
# create variables
$storageAccount = "mystorageaccount"
$storageKey = "<storage access key>"
$secureString = ConvertTo-SecureString $storageKey -asplaintext -force
$credentialName = "mycredential"
$srvPath = "SQLSERVER:\SQL\COMPUTERNAME\INSTANCENAME"
# for default instance, the $srvpath variable would be "SQLSERVER:\SQL\COMPUTERNAME\DEFAULT"
# Create a credential
New-SqlCredential -Name $credentialName -Path $srvpath -Identity $storageAccount -Secret $secureString
Sauvegarde d’une base de données complète
L’exemple suivant sauvegarde la base de données AdventureWorks2012 dans le service stockage Blob Azure.
BACKUP DATABASE AdventureWorks2012
TO URL = 'https://mystorageaccount.blob.core.windows.net/mycontainer/AdventureWorks2012.bak'
WITH CREDENTIAL = 'mycredential'
,COMPRESSION
,STATS = 5;
GO
// Connect to default sql server instance on local machine
Server server = new Server(".");
string identity = "mystorageaccount";
string credentialName = "mycredential";
string dbName = "AdventureWorks2012";
string blobContainerName = "mycontainer";
// Generate Unique Url
string url = String.Format(@"https://{0}.blob.core.windows.net/{1}/{2}-{3}.bak",
identity,
blobContainerName,
dbName,
DateTime.Now.ToString("s").Replace(":", "-"));
// Backup to Url
Backup backup = new Backup();
backup.CredentialName = credentialName;
backup.Database = dbName;
backup.CompressionOption = BackupCompressionOptions.On;
backup.Devices.AddDevice(url, DeviceType.Url);
backup.SqlBackup(server);
# create variables
$backupUrlContainer = "https://mystorageaccount.blob.core.windows.net/mycontainer/"
$credentialName = "mycredential"
$srvPath = "SQLSERVER:\SQL\COMPUTERNAME\INSTANCENAME"
# for default instance, the $srvpath varilable would be "SQLSERVER:\SQL\COMPUTERNAME\DEFAULT"
# navigate to SQL Server Instance
CD $srvPath
$backupFile = $backupUrlContainer + "AdventureWorks2012" + ".bak"
Backup-SqlDatabase -Database AdventureWorks2012 -backupFile $backupFile -SqlCredential $credentialName -CompressionOption On
Sauvegarde de la base de données et du journal
L’exemple suivant sauvegarde l’exemple de base de données AdventureWorks2012, qui utilise le modèle de récupération simple par défaut. Afin de prendre en charge les sauvegardes de journaux, la base de données AdventureWorks2012 est modifiée pour utiliser le mode de récupération complète. L’exemple crée ensuite une sauvegarde complète de la base de données sur Azure Blob, puis après une période d’activité de mise à jour, il sauvegarde le journal. Cet exemple crée un nom de fichier de sauvegarde avec un horodatage de date et d'heure.
-- To permit log backups, before the full database backup, modify the database
-- to use the full recovery model.
USE master;
GO
ALTER DATABASE AdventureWorks2012
SET RECOVERY FULL;
GO
-- Back up the full AdventureWorks2012 database.
-- First create a file name for the backup file with DateTime stamp
DECLARE @Full_Filename AS VARCHAR (300);
SET @Full_Filename = 'https://mystorageaccount.blob.core.windows.net/mycontainer/AdventureWorks2012_Full_'+
REPLACE (REPLACE (REPLACE (CONVERT (VARCHAR (40), GETDATE (), 120), '-','_'),':', '_'),' ', '_') + '.bak';
--Back up Adventureworks2012 database
BACKUP DATABASE AdventureWorks2012
TO URL = @Full_Filename
WITH CREDENTIAL = 'mycredential';
,COMPRESSION
GO
-- Back up the AdventureWorks2012 log.
DECLARE @Log_Filename AS VARCHAR (300);
SET @Log_Filename = 'https://mystorageaccount.blob.core.windows.net/mycontainer/AdventureWorks2012_Log_'+
REPLACE (REPLACE (REPLACE (CONVERT (VARCHAR (40), GETDATE (), 120), '-','_'),':', '_'),' ', '_') + '.trn';
BACKUP LOG AdventureWorks2012
TO URL = @Log_Filename
WITH CREDENTIAL = 'mycredential'
,COMPRESSION;
GO
// Connect to default sql server instance on local machine
Server server = new Server(".");
string identity = "mystorageaccount";
string credentialName = "mycredential";
string dbName = "AdventureWorks2012";
string blobContainerName = "mycontainer";
// Generate Unique Url for data backup
string urlDataBackup = String.Format(@"https://{0}.blob.core.windows.net/{1}/{2}_Data-{3}.bak",
identity,
blobContainerName,
dbName,
DateTime.Now.ToString("s").Replace(":", "-"));
// Backup Database to Url
Backup backupData = new Backup();
backupData.CredentialName = credentialName;
backupData.Database = dbName;
backup.CompressionOption = BackupCompressionOptions.On;
backupData.Devices.AddDevice(urlDataBackup, DeviceType.Url);
backupData.SqlBackup(server);
// Generate Unique Url for data backup
string urlLogBackup = String.Format(@"https://{0}.blob.core.windows.net/{1}/{2}_Log-{3}.bak",
identity,
blobContainerName,
dbName,
DateTime.Now.ToString("s").Replace(":", "-"));
// Backup Database Log to Url
Backup backupLog = new Backup();
backupLog.CredentialName = credentialName;
backupLog.Database = dbName;
backup.CompressionOption = BackupCompressionOptions.On;
backupLog.Devices.AddDevice(urlLogBackup, DeviceType.Url);
backupLog.Action = BackupActionType.Log;
backupLog.SqlBackup(server);
#create variables
$backupUrlContainer = "https://mystorageaccount.blob.core.windows.net/mycontainer/"
$credentialName = "mycredential"
$srvPath = "SQLSERVER:\SQL\COMPUTERNAME\INSTANCENAME"
# for default instance, the $srvpath variable would be "SQLSERVER:\SQL\COMPUTERNAME\DEFAULT"
# navigate to theSQL Server Instance
CD $srvPath
#Create a unique file name for the full database backup
$backupFile = $backupUrlContainer + "AdventureWorks2012_" + (Get-Date).ToString("s").Replace("-","_").Replace(":", "_").Replace(" ","_").Replace("/", "_") + ".bak"
#Backup Database to URL
Backup-SqlDatabase -Database AdventureWorks2012 -backupFile $backupFile -SqlCredential $credentialName -CompressionOption On -BackupAction Database
#Create a unique file name for log backup
$backupFile = $backupUrlContainer + "AdventureWorks2012_" + (Get-Date).ToString("s").Replace("-","_").Replace(":", "_").Replace(" ","_").Replace("/", "_") + ".trn"
#Backup Log to URL
Backup-SqlDatabase -Database AdventureWorks2012 -backupFile $backupFile -SqlCredential $credentialName -CompressionOption On -BackupAction Log
Création d’une sauvegarde complète de fichiers du groupe de fichiers principal
L’exemple suivant crée une sauvegarde complète des fichiers du groupe de fichiers principal.
--Back up the files in Primary:
BACKUP DATABASE AdventureWorks2012
FILEGROUP = 'Primary'
TO URL = 'https://mystorageaccount.blob.core.windows.net/mycontainer/AdventureWorks2012files.bck'
WITH CREDENTIAL = 'mycredential'
,COMPRESSION;
GO
// Connect to default sql server instance on local machine
Server server = new Server(".");
string identity = "mystorageaccount";
string credentialName = "mycredential";
string dbName = "AdventureWorks2012";
string blobContainerName = "mycontainer";
// Generate Unique Url
string url = String.Format(@"https://{0}.blob.core.windows.net/{1}/{2}-{3}.bck",
identity,
blobContainerName,
dbName,
DateTime.Now.ToString("s").Replace(":", "-"));
// Backup to Url
Backup backup = new Backup();
backup.CredentialName = credentialName;
backup.Database = dbName;
backup.Action = BackupActionType.Files;
backup.DatabaseFileGroups.Add("PRIMARY");
backup.CompressionOption = BackupCompressionOptions.On;
backup.Devices.AddDevice(url, DeviceType.Url);
backup.SqlBackup(server);
#create variables
$backupUrlContainer = "https://mystorageaccount.blob.core.windows.net/mycontainer/"
$credentialName = "mycredential"
$srvPath = "SQLSERVER:\SQL\COMPUTERNAME\INSTANCENAME"
# for default instance, the $srvpath variable would be "SQLSERVER:\SQL\COMPUTERNAME\DEFAULT"
# navigate to the SQL Server Instance
CD $srvPath
#Create a unique file name for the file backup
$backupFile = $backupUrlContainer + "AdventureWorks2012_" + (Get-Date).ToString("s").Replace("-","_").Replace(":", "_").Replace(" ","_").Replace("/", "_") + ".bck"
#Backup Primary File Group to URL
Backup-SqlDatabase -Database AdventureWorks2012 -backupFile $backupFile -SqlCredential $credentialName -CompressionOption On -BackupAction Files -DatabaseFileGroup Primary
Création d’une sauvegarde différentielle de fichiers du groupe de fichiers principal
L’exemple suivant crée une sauvegarde différentielle du groupe de fichiers principal.
--Back up the files in Primary:
BACKUP DATABASE AdventureWorks2012
FILEGROUP = 'Primary'
TO URL = 'https://mystorageaccount.blob.core.windows.net/mycontainer/AdventureWorks2012filesdiff.bck'
WITH
CREDENTIAL = 'mycredential'
,COMPRESSION
,DIFFERENTIAL;
GO
// Connect to default sql server instance on local machine
Server server = new Server(".");
string identity = "mystorageaccount";
string credentialName = "mycredential";
string dbName = "AdventureWorks2012";
string blobContainerName = "mycontainer";
// Generate Unique Url
string url = String.Format(@"https://{0}.blob.core.windows.net/{1}/{2}-{3}.bak",
identity,
blobContainerName,
dbName,
DateTime.Now.ToString("s").Replace(":", "-"));
// Backup to Url
Backup backup = new Backup();
backup.CredentialName = credentialName;
backup.Database = dbName;
backup.Action = BackupActionType.Files;
backup.DatabaseFileGroups.Add("PRIMARY");
backup.Incremental = true;
backup.CompressionOption = BackupCompressionOptions.On;
backup.Devices.AddDevice(url, DeviceType.Url);
backup.SqlBackup(server);
#create variables
$backupUrlContainer = "https://mystorageaccount.blob.core.windows.net/mycontainer/"
$credentialName = "mycredential"
$srvPath = "SQLSERVER:\SQL\COMUTERNAME\INSTANCENAME"
# for default instance, the $srvpath variable would be "SQLSERVER:\SQL\COMPUTERNAME\DEFAULT"
# navigate to SQL Server Instance
CD $srvPath
#create a unique file name for the full backup
$backupdbFile = $backupUrlContainer + "AdventureWorks2012_" + (Get-Date).ToString("s").Replace("-","_").Replace(":", "_").Replace(" ","_").Replace("/", "_") + ".bak"
#Create a differential backup of the primary filegroup
Backup-SqlDatabase -Database AdventureWorks2012 -backupFile $backupFile -SqlCredential $credentialName -CompressionOption On -BackupAction Files -DatabaseFileGroup Primary -Incremental
Restaurer une base de données et déplacer des fichiers
Pour restaurer une sauvegarde complète de la base de données et déplacer la base de données restaurée vers C :\Program Files\Microsoft SQL Server\MSSQL12. MSSQLSERVER\MSSQL\Data directory, procédez comme suit.
-- Backup the tail of the log first
DECLARE @Log_Filename AS VARCHAR (300);
SET @Log_Filename = 'https://mystorageaccount.blob.core.windows.net/mycontainer/AdventureWorks2012_Log_'+
REPLACE (REPLACE (REPLACE (CONVERT (VARCHAR (40), GETDATE (), 120), '-','_'),':', '_'),' ', '_') + '.trn';
BACKUP LOG AdventureWorks2012
TO URL = @Log_Filename
WITH CREDENTIAL = 'mycredential'
,NORECOVERY;
GO
RESTORE DATABASE AdventureWorks2012 FROM URL = 'https://mystorageaccount.blob.core.windows.net/mycontainer/AdventureWorks2012.bak'
WITH CREDENTIAL = 'mycredential'
,MOVE 'AdventureWorks2012_data' to 'C:\Program Files\Microsoft SQL Server\myinstance\MSSQL\DATA\AdventureWorks2012.mdf'
,MOVE 'AdventureWorks2012_log' to 'C:\Program Files\Microsoft SQL Server\myinstance\MSSQL\DATA\AdventureWorks2012.ldf'
,STATS = 5
// Connect to default sql server instance on local machine
Server server = new Server(".");
string identity = "mystorageaccount";
string credentialName = "mycredential";
string dbName = "AdventureWorks2012";
string blobContainerName = "mycontainer";
// Generate Unique Url
string urlBackupData = String.Format(@"https://{0}.blob.core.windows.net/{1}/{2}-Data{3}.bak",
identity,
blobContainerName,
dbName,
DateTime.Now.ToString("s").Replace(":", "-"));
// Backup to Url
Backup backup = new Backup();
backup.CredentialName = credentialName;
backup.Database = dbName;
backup.Devices.AddDevice(urlBackupData, DeviceType.Url);
backup.SqlBackup(server);
// Generate Unique Url for tail log backup
string urlTailLogBackup = String.Format(@"https://{0}.blob.core.windows.net/{1}/{2}-TailLog{3}.bak",
identity,
blobContainerName,
dbName,
DateTime.Now.ToString("s").Replace(":", "-"));
// Backup Tail Log to Url
Backup backupTailLog = new Backup();
backupTailLog.CredentialName = credentialName;
backupTailLog.Database = dbName;
backupTailLog.Action = BackupActionType.Log;
backupTailLog.NoRecovery = true;
backupTailLog.Devices.AddDevice(urlTailLogBackup, DeviceType.Url);
backupTailLog.SqlBackup(server);
// Restore a database and move files
string newDataFilePath = server.MasterDBLogPath + @"\" + dbName + DateTime.Now.ToString("s").Replace(":", "-") + ".mdf";
string newLogFilePath = server.MasterDBLogPath + @"\" + dbName + DateTime.Now.ToString("s").Replace(":", "-") + ".ldf";
Restore restore = new Restore();
restore.CredentialName = credentialName;
restore.Database = dbName;
restore.ReplaceDatabase = true;
restore.Devices.AddDevice(urlBackupData, DeviceType.Url);
restore.RelocateFiles.Add(new RelocateFile(dbName, newDataFilePath));
restore.RelocateFiles.Add(new RelocateFile(dbName+ "_Log", newLogFilePath));
restore.SqlRestore(server);
#create variables
$backupUrlContainer = "https://mystorageaccount.blob.core.windows.net/mycontainer/"
$credentialName = "mycredential"
$srvPath = "SQLSERVER:\SQL\COMPUTERNAME\INSTNACENAME"
# for default instance, the $srvpath variable would be "SQLSERVER:\SQL\COMPUTERNAME\DEFAULT"
# navigate to SQL Server Instance
CD $srvPath
#create a unique file name for the full backup
$backupdbFile = $backupUrlContainer + "AdventureWorks2012_" + (Get-Date).ToString("s").Replace("-","_").Replace(":", "_").Replace(" ","_").Replace("/", "_") + ".bak"
# Full database backup to URL
Backup-SqlDatabase -Database AdventureWorks2012 -backupFile $backupdbFile -SqlCredential $credentialName -CompressionOption On
#Create a unique file name for the tail log backup
$backuplogFile = $backupUrlContainer + "AdventureWorks2012_" + (Get-Date).ToString("s").Replace("-","_").Replace(":", "_").Replace(" ","_").Replace("/", "_") + ".trn"
#Backup tail log to URL
Backup-SqlDatabase -Database AdventureWorks2012 -backupFile $backupFile -SqlCredential $credentialName -BackupAction Log -NoRecovery
# Restore Database and move files
$newDataFilePath = New-Object Microsoft.SqlServer.Management.Smo.RelocateFile ("AdventureWorks_Data","C:\Program Files\Microsoft SQL Server\myinstance\MSSQL\DATA\AdventureWorks2012.mdf")
$newLogFilePath = New-Object Microsoft.SqlServer.Management.Smo.RelocateFile("AdventureWorks_Log","C:\Program Files\Microsoft SQL Server\myinstance\MSSQL\DATA\AdventureWorks2012.ldf")
Restore-SqlDatabase -Database AdventureWorks2012 -SqlCredential $credentialName -BackupFile $backupdbFile -RelocateFile @($newDataFilePath,$newLogFilePath)
Restauration vers un point dans le temps à l’aide de STOPAT
L’exemple suivant restaure une base de données à son état à un point dans le temps et affiche une opération de restauration.
RESTORE DATABASE AdventureWorks FROM URL = 'https://mystorageaccount.blob.core.windows.net/mycontainer/AdventureWorks2012.bak'
WITH
CREDENTIAL = 'mycredential'
,MOVE 'AdventureWorks2012_data' to 'C:\Program Files\Microsoft SQL Server\myinstance\MSSQL\DATA\AdventureWorks2012.mdf'
,Move 'AdventureWorks2012_log' to 'C:\Program Files\Microsoft SQL Server\myinstance\MSSQL\DATA\AdventureWorks2012.ldf'
,NORECOVERY
--,REPLACE
,STATS = 5;
GO
RESTORE LOG AdventureWorks FROM URL = 'https://mystorageaccount.blob.core.windows.net/mycontainer/AdventureWorks2012.trn'
WITH CREDENTIAL = 'mycredential'
,RECOVERY
,STOPAT = 'Oct 23, 2012 5:00 PM'
GO
// Connect to default sql server instance on local machine
Server server = new Server(".");
string identity = "mystorageaccount";
string credentialName = "mycredential";
string dbName = "AdventureWorks2012";
string blobContainerName = "mycontainer";
// Generate Unique Url
string urlBackupData = String.Format(@"https://{0}.blob.core.windows.net/{1}/{2}-Data{3}.bak",
identity,
blobContainerName,
dbName,
DateTime.Now.ToString("s").Replace(":", "-"));
// Backup to Url
Backup backup = new Backup();
backup.CredentialName = credentialName;
backup.Database = dbName;
backup.Devices.AddDevice(urlBackupData, DeviceType.Url);
backup.SqlBackup(server);
// Generate Unique Url for Tail Log backup
string urlTailLogBackup = String.Format(@"https://{0}.blob.core.windows.net/{1}/{2}-TailLog{3}.bak",
identity,
blobContainerName,
dbName,
DateTime.Now.ToString("s").Replace(":", "-"));
// Backup Tail Log to Url
Backup backupTailLog = new Backup();
backupTailLog.CredentialName = credentialName;
backupTailLog.Database = dbName;
backupTailLog.Action = BackupActionType.Log;
backupTailLog.NoRecovery = true;
backupTailLog.Devices.AddDevice(urlTailLogBackup, DeviceType.Url);
backupTailLog.SqlBackup(server);
// Restore a database and move files
string newDataFilePath = server.MasterDBLogPath + @"\" + dbName + DateTime.Now.ToString("s").Replace(":", "-") + ".mdf";
string newLogFilePath = server.MasterDBLogPath + @"\" + dbName + DateTime.Now.ToString("s").Replace(":", "-") + ".ldf";
Restore restore = new Restore();
restore.CredentialName = credentialName;
restore.Database = dbName;
restore.ReplaceDatabase = true;
restore.NoRecovery = true;
restore.Devices.AddDevice(urlBackupData, DeviceType.Url);
restore.RelocateFiles.Add(new RelocateFile(dbName, newDataFilePath));
restore.RelocateFiles.Add(new RelocateFile(dbName + "_Log", newLogFilePath));
restore.SqlRestore(server);
// Restore transaction Log with stop at
Restore restoreLog = new Restore();
restoreLog.CredentialName = credentialName;
restoreLog.Database = dbName;
restoreLog.Action = RestoreActionType.Log;
restoreLog.Devices.AddDevice(urlBackupData, DeviceType.Url);
restoreLog.ToPointInTime = DateTime.Now.ToString();
restoreLog.SqlRestore(server);
#create variables
$backupUrlContainer = "https://mystorageaccount.blob.core.windows.net/mycontainer/"
$credentialName = "mycredential"
$srvPath = "SQLSERVER:\SQL\COMPUTERNAME\INSTANCENAME"
# for default instance, the $srvpath variable would be "SQLSERVER:\SQL\COMPUTERNAME\DEFAULT"
# Navigate to SQL Server Instance Directory
CD $srvPath
#create a unique file name for the full backup
$backupdbFile = $backupUrlContainer + "AdventureWorks2012_" + (Get-Date).ToString("s").Replace("-","_").Replace(":", "_").Replace(" ","_").Replace("/", "_") + ".bak"
# Full database backup to URL
Backup-SqlDatabase -Database AdventureWorks2012 -backupFile $backupdbFile -SqlCredential $credentialName -CompressionOption On
#Create a unique file name for the tail log backup
$backuplogFile = $backupUrlContainer + "AdventureWorks2012_" + (Get-Date).ToString("s").Replace("-","_").Replace(":", "_").Replace(" ","_").Replace("/", "_") + ".trn"
#Backup tail log to URL
Backup-SqlDatabase -Database AdventureWorks2012 -backupFile $backupFile -SqlCredential $credentialName -BackupAction Log -NoRecovery
# Restore Database and move files
$newDataFilePath = New-Object Microsoft.SqlServer.Management.Smo.RelocateFile ("AdventureWorks_Data","C:\Program Files\Microsoft SQL Server\myinstance\MSSQL\DATA\AdventureWorks2012.mdf")
$newLogFilePath = New-Object Microsoft.SqlServer.Management.Smo.RelocateFile("AdventureWorks_Log","C:\Program Files\Microsoft SQL Server\myinstance\MSSQL\DATA\AdventureWorks2012.ldf")
Restore-SqlDatabase -Database AdventureWorks2012 -SqlCredential $credentialName -BackupFile $backupdbFile -RelocateFile @($newDataFilePath,$newLogFilePath) -NoRecovery
# Restore Transaction log with Stop At:
Restore-SqlDatabase -Database AdventureWorks2012 -SqlCredential $credentialName -BackupFile $backuplogFile -ToPointInTime (Get-Date).ToString()
Voir aussi
Meilleures pratiques et résolution des problèmes liés à la sauvegarde SQL Server vers l’URL
Sauvegarder et restaurer des bases de données système (SQL Server)