web-dev-qa-db-fra.com

Migrer vers Amazon SQL Server RDS

J'ai tenté de passer d'un serveur SQL normal 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 le serveur de destination. J'ai tenté un script en 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.

32
tourdownunder

téléchargez gratuitement 'l'Assistant de migration SQL Azure' à partir de CodePlex - J'ai fait un court blog/screencast à ce sujet. Veillez à définir le paramètre "TO" de l'assistant sur le nom DNS AWS, puis à utiliser "SQL Server 2008" et not "SQL Azure".

51
Lynn Langit

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

Guide officiel de migration de la base de données AWS

Et cela m'a également envoyé un clin d'œil non officiel à l'outil de migration de base de données Azure. Utilisez-le simplement pour générer un script de votre schéma et/ou de vos données et l'exécuter sur votre instance RDS. C'est un bon outil. Pour ce faire, vous devez d'abord importer le fichier .bak dans un serveur SQL non RDS.

Outil de migration SQL Azure

8
Tj Kellie

J'ai rédigé des instructions pas à pas sur comment restaurer un fichier .bak vers RDS en utilisant l'outil de migration SQL Azure basé sur le screencast de Lynn. Cette méthode est beaucoup plus simple que les instructions officielles et a bien fonctionné pour plusieurs bases de données que j'ai migrées.

6
humbads

Vous constaterez probablement que le format Applications de niveau données BACPAC vous fournira la solution la plus pratique. Vous pouvez utiliser Export pour générer un fichier contenant à la fois le schéma de base de données et les données. Import créera une nouvelle base de données contenant des données basées sur ce fichier.

Contrairement aux opérations sauvegarde et restauration , l'exportation et l'importation ne nécessitent pas d'accès au système de fichiers du serveur de base de données.

Vous pouvez utiliser des fichiers BACPAC avec SQL Server Management Studio ou via l’API dans .Net, Powershell, MSBuild, etc.

Export Data-tier Application Dialog

Notez qu'il existe des problèmes d'utilisation de cette méthode pour exporter, puis importer à partir d'Amazon RDS. Lorsqu'une nouvelle base de données est créée sur RDS, les deux objets suivants y sont créés.

  • Un utilisateur membre du rôle db_owner.
  • Le déclencheur rds_deny_backups_trigger

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 ajoutés automatiquement par RDS. Ces objets sont à la fois présents dans le fichier BACPAC et créés automatiquement par RDS lors de la création de la nouvelle base de données.

Si vous disposez d'une instance non-RDS de SQL Server, vous pouvez importer le BACPAC dans cette instance, supprimer les objets ci-dessus, puis exporter la base de données pour créer un nouveau fichier BACPAC. Celui-ci n'aura aucun conflit lorsque vous le restaurerez sur une instance RDS.

Sinon, il est possible de contourner ce problème en procédant comme suit.

  1. Editez le fichier model.xml dans le fichier BACPAC (les BACPAC ne sont que des fichiers Zip).
  2. Supprimez les éléments avec les valeurs suivantes associées aux objets répertoriés ci-dessus (ceux qui sont automatiquement ajoutés par RDS) dans leurs attributs Type.
    • SqlRoleMembership
    • SqlPermissionStatement
    • SqlLogin
    • SqlUser
    • SqlDatabaseDdlTrigger
  3. Générez une somme de contrôle pour la version modifiée du fichier model.xml à l'aide de l'une des méthodes ComputeHash de la classe SHA256 .
  4. Utilisez la méthode BitConverter.ToString () pour convertir le hachage en chaîne hexadécimale (vous devrez supprimer les séparateurs).
  5. Remplacez le hachage existant dans l'élément Checksum du fichier Origin.xml (également contenu dans le fichier BACPAC) par le nouveau.
  6. Créez un nouveau fichier BACPAC en compressant le contenu de l'original avec les fichiers model.xml et Origin.xml remplacés par les nouvelles versions. N'utilisez PAS System.IO.Compression.ZipFile à cette fin, car il semble y avoir un conflit avec le fichier Zip généré - les données ne sont pas incluses dans l'importation. J'ai utilisé 7Zip sans aucun problème.
  7. Importez le nouveau fichier BACPAC et vous ne devriez pas avoir de conflits avec les objets générés automatiquement par RDS.

Remarque: Il existe un autre problème lié à l'importation d'un BacPac dans RDS à l'aide de SQL Server Management Studio, problème que j'explique ici .

5
Scott Munro

Utilisez l'assistant d'exportation du studio de gestion de serveur SQL sur votre base de données source. Faites un clic droit sur la base de données> tâches> exporter des données. Un assistant vous guide pour l’envoi de toute la base de données à un serveur SQL distant.

3
DShook

L'article suivant expliquant comment copier une base de données avec des données - Générer T-SQL pour l'insertion de données d'une table à une autre est ce dont j'avais besoin. 

http://blog.sqlauthority.com/2009/07/29/sql-server-2008-copy-database-with-data-generate-t-sql-for-inserting-data-from-one-table- to-another-table/

0
tourdownunder

AWS est un outil conçu par AWS qui répond à la plupart, voire à toutes vos questions de compatibilité: l'outil de conversion de schéma pour SQL Server: https://docs.aws.Amazon.com/SchemaConversionTool/latest/userguide/CHAP_Source .SQLServer.html

Étant donné que tous les objets de base de données de serveur SQL ne sont pas pris en charge par RDS et varient même d'une version à l'autre du serveur SQL, le rapport d'évaluation vaudra également votre temps: https://docs.aws.Amazon.com/SchemaConversionTool /latest/userguide/CHAP_AssessmentReport.html

Enfin, utilisez définitivement le service de migration de base de données: https://aws.Amazon.com/dms/

0
jpspesh