Vous trouverez probablement que les Applications de la couche Données BACPAC format va vous fournir la solution la plus pratique. Vous pouvez utiliser l'Exportation de produire un fichier qui contient à la fois le schéma de base de données et les données. Importation permettra de créer une nouvelle base de données qui est rempli avec des données basées sur ce fichier.
En revanche pour la Sauvegarde et la Restauration des opérations, l'Exportation et l'Importation ne nécessite pas d'accès à la base de données système de fichiers du serveur.
Vous pouvez travailler avec le BACPAC fichiers à l'aide de SQL Server Management Studio ou via l'API .Net, Powershell, MSBuild etc.
![Export Data-tier Application Dialog]()
Notez qu'il y a des problèmes à l'aide de cette méthode afin d'Exporter et d'Importer et d'Amazon RDS. Comme une nouvelle base de données est créée sur RDS, les deux objets sont créés en son sein.
- Un Utilisateur avec l'appartenance au rôle db_owner.
- Le rds_deny_backups_trigger Déclencheur
![The rds_deny_backups_trigger Trigger]()
Lors de l'importation, il y aura un conflit entre les objets inclus dans le fichier BACPAC et ceux qui sont ajoutés automatiquement par RDS. Ces objets sont à la fois présents dans le fichier BACPAC et créé automatiquement par RDS comme la nouvelle base de données est créée.
Si vous avez un non-RDS instance de SQL Server à portée de main, vous pouvez ensuite Importer le BACPAC à cette instance, déposer les objets ci-dessus, puis d'exporter la base de données pour créer un nouveau fichier BACPAC. Ce sera pas de tout conflit lors de la restauration d'un RDS instance.
Sinon, il est possible de contourner ce problème en utilisant les étapes suivantes.
- Modifier la model.xml fichier dans le fichier BACPAC (Ainsi sont juste des fichiers zip).
- Supprimer des éléments avec les valeurs suivantes dans leurs attributs qui sont liés aux objets énumérés ci-dessus (ceux qui sont automatiquement ajoutés par RDS).
- SqlRoleMembership
- SqlPermissionStatement
- SqlLogin
- SqlUser
- SqlDatabaseDdlTrigger
- Générer une somme de contrôle pour la version modifiée de l'model.xml fichier à l'aide de l'un des ComputeHash des méthodes sur le SHA256 classe.
- Utiliser le BitConverter.ToString() méthode pour convertir le hash d'une chaîne hexadécimale (vous aurez besoin d'enlever les séparateurs).
- Remplacer le hachage de la somme de contrôle de l'élément dans le origin.xml fichier (également contenues dans le fichier BACPAC) avec le nouveau.
- Créer un nouveau fichier BACPAC par les compresser le contenu de l'original, avec à la fois la model.xml et origin.xml fichiers remplacés par les nouvelles versions. Ne PAS utiliser de Système.IO.La Compression.ZipFile à cette fin, comme il semble y avoir un conflit avec le fichier zip qui est produit - les données ne sont pas inclus dans l'importation. J'ai utilisé 7Zip sans aucun problème.
- Importer le nouveau fichier BACPAC et vous ne devriez pas avoir de conflits avec les objets qui sont générés automatiquement par RDS.
Remarque: Il en est un autre problème lié à l'importation d'un BacPac à RDS à l'aide de SQL Server Management Studio qui je l'explique ici.