見出し画像

AccessからSQLServerへのテーブル移行

みなさん、AccessのテーブルデータをSQLServerに移行する際はどのように行っていますでしょうか?

AzureSQLDatabaseやSQLServerに現在まで運用してきた「過去データ」や「マスタデータ」を移行する作業は非常に重要です。

代表的な移行ツールにSSMA「SQL Server Migration Assistant」がありますが、Access2010のRumtimeバージョンが必要だったり、Bit数が異なっていたりすると移行できない等、かなりハードルが高いのではないかと思います。

SSMSを利用したテーブルの「データインポート」による移行方法

画像1

SSMSには、データのインポートという機能が備わっています。

画像2

データソースの選択画面で「コピー元」のアクセスファイル(mdbファイル限定)を選択します。※accdbファイルは移行できないようです。

画像3

データのコピー先を選択します。サーバ名・データベースを選択し、SQLServer認証のsa権限のパスワードを入力し、「Next」ボタンをクリックします。

画像4

「1つ以上のテーブルまたはビューからデータをコピーする」を選択し「Next」をクリックします。

画像5

変換元の隣のチェックボックス(添付赤丸)にチェックを入れると全テーブルが選択されます。「Next」ボタンをクリックします。

画像6

すぐに実行をクリックすると、テーブルの移行が始まります。実行後、Closeボタンをクリックします。

主キーが移行されていない

画像7

無事にAccessで作成されたテーブルがSQLServer内に移行されます。ただ、Accessで主キーを作成した情報がインポートされていません。後からSQLServer内で再度主キーを設定する必要があります。

オートナンバー型が移行されていない

画像8

Accessのテーブルに「オートナンバー」がありますが、移行先のSQLServerはオートナンバーには変換されません。

※SQLServerのオートナンバー設定は、「IDである」が「はい」に設定する必要があります

既定値が移行されていない

画像9

既定値に「0」などを設定する場合があります。データのインポートだと規定値は移行されません

インデックスが移行されない

画像10

例えば、仕入Subテーブルの商品コードに「IX_商品コード」という名前でインデックスを作成します。こちらも同様にSSMSのデータのインポートだと移行されません

移行ツールの御紹介

画像11

mdbファイルからの移行は、開発中、何回も本番データをインポートし、本番データで確認する必要があります。また、Access→SQLServerに運用を移行する直前でもインポートする必要があるかと思います。そのたびに主キーやオートナンバー、インデックスや規定値の設定を行っていたら、設定作業に時間を取られる以外に、設定漏れなどの人的ミスが発生し本番のテーブルでエラーが発生する可能性があります。

今回御紹介する移行ツールは、データのインポートを行った後に各テーブルの下記の4つの移行元のaccdbと同様の設定を自動でSQLServerに設定するツールです。

①主キー情報

②オートナンバー情報

③規定値情報(0や-1などの規定値)※Dateなどの関数は反映されません。

④インデックス情報

では、Part2で移行ツールの実際の動きを御紹介したいと思います。

この記事が気に入ったらサポートをしてみませんか?