2012-05-09 19 views
32

私は、Amazon AWS RDS上のWin2008サーバー上の通常のSQL ServerからSQL Serverに移行しようとしています。Amazon SQL Server RDSに移行

単純なバックアップとリストアが機能すると私は考えました。 AWS RDSはファイルシステムへのアクセス権を持たないように見えるので、SQLスクリプトはすべてソースと宛先サーバ上にローカルファイルシステムを必要とするようです。私は次のスクリプトを試みました

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] 

どのような提案が役に立ちます。

+0

データベーススキーマを転送しているだけで、データも転送する必要がありますか? – JeffO

+1

Amazon RDSであるという事実はこれを考慮していません。ローカルファイルシステムにアクセスするたびに、T-SQLを実行しているデータベースエンジンに関することを覚えておく必要があります。この場合、AmazonインスタンスのCドライブからファイルを復元しようとしています。そのファイルはそこに存在しません。可能であれば、何らかの形でファイルを入手するか、またはUNC経由でアクセスできるサーバーにファイルを入手してください。しかし、これがRDSでは不可能であれば、私は驚くことはありません。 –

+0

Jeff Oデータも同様です。 – darwindave

答えて

51

CodePlexから無料の 'SQL Azureの移行ウィザード' をダウンロードしてください - 私はこれについての短いblog/screencastをしました。ウィザードで 'TO'設定をAWS DNS名に設定してから 'SQL Server 2008'を使用してください。 'SQL Azure'

+0

リンに感謝します。次回はこのことを覚えておきます。 – darwindave

+3

私はアマゾンがドキュメントにこれにリンクしたくないと思っていますが、彼らが提案したものよりもずっと簡単にマイグレーションする方法です(これは以前何時間も無駄でした) – petenelson

+2

誰かがリファレンスの下にこのフォーラム/苦情:https://forums.aws.amazon.com/message.jspa?messageID=442219#442219 – drzaus

3

ソースデータベースのSQL Server管理スタジオでエクスポートウィザードを使用してください。データベース>タスク>データのエクスポートを右クリックします。データベース全体をリモートSQLサーバーに送信するウィザードがあります。

+0

これは痛みです。なぜなら、デフォルトのオプションではあなたの作業用のデータベースが得られないからです。少なくともSMSツール - >オプション - > SQL Serverオブジェクトエクスプローラ - >スクリプトに進み、エクスポートを行う前に「依存オブジェクトのスクリプトを生成する」と「スクリプトインデックス」をtrueに設定する必要があります。 – jaminto

+0

また、遅いです。 –

8

.bakファイルを使用したSQLデータベースの移行に関するAWSサポートの正式な言葉は、サポートされていないということです。 .bakファイルからすぐに復元する必要はありません。

Official AWS database migration guide

をし、また私にAzureのデータベース移行ツールで非公式ウインクを与えた:彼らはここでは、既存のデータベースの移行のための公式のヘルプを提供しました。スキーマやデータのスクリプトを生成し、RDSインスタンスに対して実行するだけです。その良いツールです。最初にこれを行うには、.bakを非RDS SQLサーバーにインポートする必要があります。

SQL Azure migration tool

+0

.bakファイルからRDSに復元できるようになりました - http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/SQLServer.Procedural.Importing.html – jaminto

6

私はリンのスクリーンキャストに基づいてSQL Azureの移行ツールを使用してhow to restore a .bak file to RDS上でいくつかの手順を書きました。これは公式の指示よりはるかに簡単な方法であり、私が移行したいくつかのデータベースでうまくいきました。

+0

これは実際に私が行った最善の方法の1つですAmazonが圧縮されたネイティブバックアップの適切なインポート/エクスポートをサポートしていないことは非常に大きな残念なことです。アマゾンのアカウントマネージャーは、この問題が本当に人々を怒らせることが分かっていることをよく承知していますが、それがいつサポートされるかについての明確な考えはありません:( – Kram

+0

私はグーグルであなたのポストを見つけました。驚くほど完全に。ありがとう! – David

4

Data-tier Applications BACPAC形式は、最も便利なソリューションを提供します。 Exportを使用すると、データベースのスキーマとデータの両方を含むファイルを作成できます。 Importは、そのファイルに基づいてデータが入力される新しいデータベースを作成します。

Backup and Restoreの操作とは対照的に、エクスポートとインポートでは、データベースサーバーのファイルシステムにアクセスする必要はありません。

あなたは、SQL Server Management Studioを使用してBACPACファイルをや.NET、PowerShellのAPIを経由して作業することができ、MSBuildのなど

Export Data-tier Application Dialog

[エクスポートとインポートするには、この方法を使用して問題がある。なおAmazon RDSとのやりとり。 RDSに新しいデータベースが作成されると、その中に次の2つのオブジェクトが作成されます。

  • db_ownerロールのメンバーシップを持つユーザー。
  • rds_deny_backups_triggerトリガ
  • インポート中

The rds_deny_backups_trigger Trigger

、オブジェクト間の衝突が存在するであろうBACPACファイルとRDSによって自動的に追加されたものに含まれます。これらのオブジェクトは両方ともBACPACファイルに存在し、新しいデータベースが作成されると自動的にRDSによって作成されます。

SQL Serverの非RDSインスタンスが便利な場合は、そのインスタンスにBACPACをインポートし、上記のオブジェクトを削除してデータベースをエクスポートして、新しいBACPACファイルを作成できます。これは、RDSインスタンスに復元するときに競合が発生しません。

それ以外の場合は、以下の手順でこの問題を回避することができます。

  1. BACPACファイル内のmodel.xmlファイルを編集します(BACPACはただのzipファイルです)。
  2. 上記のオブジェクト(RDSによって自動的に追加されるオブジェクト)に関連するType属性で、次の値を持つ要素を削除します。
    • SqlRoleMembership
    • SqlPermissionStatement
    • SqlLogin
    • SQLUSER
    • SqlDatabaseDdlTrigger
  3. SHA256にComputeHashメソッドのいずれかを使用してmodel.xmlファイルの修正バージョンのチェックサムを生成しますクラス。
  4. BitConverter.ToString()メソッドを使用して、ハッシュを16進文字列に変換します(セパレータを削除する必要があります)。
  5. (BACPACファイルにも含まれる)origin.xmlファイルのChecksum要素の既存のハッシュを新しいものに置き換えます。
  6. model.xmlファイルとorigin.xmlファイルの両方を新しいバージョンに置き換えて、元のコンテンツを圧縮して新しいBACPACファイルを作成します。作成されているzipファイルとの競合があるように、この目的ではSystem.IO.Compression.ZipFileを使用しないでください。データはインポートに含まれません。私は7Zipを問題なく使用しました。
  7. 新しいBACPACファイルをインポートすると、RDSによって自動的に生成されたオブジェクトとの競合は発生しません。

注: RDS私はhereを説明するSQL Server Management Studioを使用しBACPACをインポートすると、別の、関連する問題があります。

関連する問題