AccessからSQLServerへのテーブル移行
みなさん、AccessのテーブルデータをSQLServerに移行する際はどのように行っていますでしょうか?
AzureSQLDatabaseやSQLServerに現在まで運用してきた「過去データ」や「マスタデータ」を移行する作業は非常に重要です。
代表的な移行ツールにSSMA「SQL Server Migration Assistant」がありますが、Access2010のRumtimeバージョンが必要だったり、Bit数が異なっていたりすると移行できない等、かなりハードルが高いのではないかと思います。
SSMSを利用したテーブルの「データインポート」による移行方法
SSMSには、データのインポートという機能が備わっています。
データソースの選択画面で「コピー元」のアクセスファイル(mdbファイル限定)を選択します。※accdbファイルは移行できないようです。
データのコピー先を選択します。サーバ名・データベースを選択し、SQLServer認証のsa権限のパスワードを入力し、「Next」ボタンをクリックします。
「1つ以上のテーブルまたはビューからデータをコピーする」を選択し「Next」をクリックします。
変換元の隣のチェックボックス(添付赤丸)にチェックを入れると全テーブルが選択されます。「Next」ボタンをクリックします。
すぐに実行をクリックすると、テーブルの移行が始まります。実行後、Closeボタンをクリックします。
主キーが移行されていない
無事にAccessで作成されたテーブルがSQLServer内に移行されます。ただ、Accessで主キーを作成した情報がインポートされていません。後からSQLServer内で再度主キーを設定する必要があります。
オートナンバー型が移行されていない
Accessのテーブルに「オートナンバー」がありますが、移行先のSQLServerはオートナンバーには変換されません。
※SQLServerのオートナンバー設定は、「IDである」が「はい」に設定する必要があります
既定値が移行されていない
既定値に「0」などを設定する場合があります。データのインポートだと規定値は移行されません
インデックスが移行されない
例えば、仕入Subテーブルの商品コードに「IX_商品コード」という名前でインデックスを作成します。こちらも同様にSSMSのデータのインポートだと移行されません
移行ツールの御紹介
mdbファイルからの移行は、開発中、何回も本番データをインポートし、本番データで確認する必要があります。また、Access→SQLServerに運用を移行する直前でもインポートする必要があるかと思います。そのたびに主キーやオートナンバー、インデックスや規定値の設定を行っていたら、設定作業に時間を取られる以外に、設定漏れなどの人的ミスが発生し本番のテーブルでエラーが発生する可能性があります。
今回御紹介する移行ツールは、データのインポートを行った後に各テーブルの下記の4つの移行元のaccdbと同様の設定を自動でSQLServerに設定するツールです。
①主キー情報
②オートナンバー情報
③規定値情報(0や-1などの規定値)※Dateなどの関数は反映されません。
④インデックス情報
では、Part2で移行ツールの実際の動きを御紹介したいと思います。
この記事が気に入ったらサポートをしてみませんか?