32 votes

Migrer vers Amazon SQL Server RDS

J'ai essayé de passer d'un serveur SQL ordinaire sur un serveur Win2008 à un serveur SQL sur Amazon AWS RDS.

Je pensais qu'une simple sauvegarde et restauration fonctionnerait. Bien qu'AWS RDS ne semble pas avoir accès à un système de fichiers, les scripts sql semblent tous avoir besoin d'un système de fichiers local sur le serveur source et de destination. J'ai tenté un script suivant

 exec sp_addlinkedserver @server='test.xxxx.us-east-1.rds.amazonaws.com'

-- Verify that the servers were linked (lists linked servers)
exec sp_linkedservers

EXEC ('RESTORE DATABASE [orchard] FROM DISK = ''C:\Temp\orchard.bak'' WITH FILE = 1,  NOUNLOAD, STATS = 10')
AT [test.xxxx.us-east-1.rds.amazonaws.com]
 

Toute suggestion serait utile.

51voto

Lynn Langit Points 2311

Téléchargez gratuitement 'SQL Azure Migration Wizard' de CodePlex - j'ai fait un court blog / screencast à ce sujet. Assurez-vous de définir le paramètre «TO» dans l'assistant sur le nom DNS AWS, puis utilisez «SQL Server 2008» et non «SQL Azure»

8voto

Tj Kellie Points 3136

Le mot officiel que j'ai pour l'AWS support sur la migration de bases de données SQL à l'aide .bak fichiers, c'est qu'il n'est pas pris en charge. Donc pas plus rapide de restaurer à partir d' .bak fichiers. Ils ont offert de l'aide officielle pour la migration des bases de données existantes ici:

Officiel de la base de données AWS guide de migration

Et m'a aussi donné une officieux clin d'oeil à l'Azur de la base de données de l'outil de migration. Simplement l'utiliser pour générer un script de votre schéma et / ou de données et de l'exécuter à l'encontre de votre RDS instance. C'est un bon outil. Vous devez importer le .bak dans une situation de non-RDS SQL server première pour ce faire.

SQL Azure outil de migration

7voto

Scott Munro Points 4008

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.

  1. Modifier la model.xml fichier dans le fichier BACPAC (Ainsi sont juste des fichiers zip).
  2. 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
  3. 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.
  4. Utiliser le BitConverter.ToString() méthode pour convertir le hash d'une chaîne hexadécimale (vous aurez besoin d'enlever les séparateurs).
  5. 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.
  6. 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.
  7. 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.

6voto

humbads Points 649

J'ai rédigé des instructions étape par étape sur la façon de restaurer un fichier .bak sur RDS à l'aide de l'outil de migration SQL Azure basé sur la capture d'écran de Lynn. Il s'agit d'une méthode beaucoup plus simple que les instructions officielles, et elle a bien fonctionné pour plusieurs bases de données que j'ai migrées.

4voto

DShook Points 5361

Utilisez l'assistant d'exportation dans SQL Server Management Studio sur votre base de données source. Faites un clic droit sur la base de données> tâches> exporter les données. Un assistant vous guide tout au long de l'envoi de la base de données entière vers un serveur SQL distant.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X