AccScan
技術

無料のSQL Server ExpressにAccessのデータを移す手順と制限

SQL Server 2022 Expressは無料で使えますが、1データベース10GB・バッファ1,410MB・4コアまでの制限があります。AccessのバックエンドをExpressに移す手順、SSMAの使い方、移行後のリンクテーブル接続を解説します。

まずは、自社のAccessが「解析できるか」を無料で確認できます。

約2分・ファイル送信不要・発注義務なし

結論:Accessの「バックエンドだけSQL Server Expressに移す」構成が現実的

SQL Server Expressは無料で使えるMicrosoftのリレーショナルデータベースです。2025年11月時点の現行正式版はSQL Server 2022 Expressで、1データベースあたり最大10GBのデータファイル、バッファプールメモリ1,410MB、CPUは1ソケットまたは4コアの小さい方、という制限があります(SQL Server 2022 エディション比較 — Microsoft Learn)。次期版のSQL Server 2025は現在公開プレビュー中で、正式版ではExpressの容量上限が50GBへ拡大される予定です(SQL Server 2025 エディション比較 — Microsoft Learn)。本記事は現行の2022版を基準に説明します。

Accessで問題になりやすい2GBの壁複数人で使うと遅い・壊れるという課題に対して、「フロントエンドのAccessフォームはそのまま残し、データを持つバックエンドだけをSQL Server Expressに移す」という構成は、移行コストを抑えながら実用的な改善を得る方法として検討に値します。ただしExpressにも容量上限はあるので、その先が見えている場合はStandard以上の有償版を最初から選ぶ方が合理的です。

この記事では、SQL Server Expressの仕様確認、SSMAを使ったデータ移行の流れ、移行後のAccessフロントエンドとの接続、そして現場でよくつまずく点を整理します。

SQL Server Expressの制限を先に確認する

移行を進める前に、Expressの制限が自分たちのデータ規模に合うかを確認してください。公式ドキュメントに掲載されている主要な制限は次のとおりです(現行の2022版と、公開プレビュー中の2025版)。

項目SQL Server 2025 Express(プレビュー)SQL Server 2022 Express(現行)
最大データベースサイズ50 GB(データファイル)10 GB(データファイル)
バッファプールメモリ1,410 MB1,410 MB
最大CPU1ソケットまたは4コアの小さい方1ソケットまたは4コアの小さい方
Always Onフェールオーバー非対応非対応
SQL Server Agent非対応非対応
価格無料無料

現行2022版の10GB上限でも、Access 1ファイルの2GB上限より5倍大きく、多くの規模では余裕があります(公開プレビュー中の2025版では50GBへ拡大予定で、さらに余裕が生まれます)。ただしこの上限はデータファイル(.mdfおよびセカンダリファイル)の合計に適用され、ログファイル(.ldf)は対象外です。複数のデータファイルに分けても合計が上限を超えれば引っかかります。

フェールオーバークラスタリングやAlways On可用性グループはExpressでは使えません。「止まったら困る」業務での利用は、可用性設計の観点からStandard以上の選択を検討してください。SQL Server Agentがないため、ジョブのスケジュール実行(定期バッチなど)はWindowsタスクスケジューラなど外部のスケジューラで代替します。

Developer Editionという選択肢もあります。SQL Server 2022版ではEnterprise相当の機能が使えて無料ですが、本番利用は禁止されています(公開プレビュー中の2025版ではEnterprise DeveloperとStandard Developerの2種類に分かれる予定です)。開発・検証環境での動作確認にはDeveloper Editionが適しています。

移行前の準備:Accessデータベースを整える

データ移行ツールのSSMA(SQL Server Migration Assistant)for Accessを使う前に、Accessデータベース側を整えておくことで、変換エラーが減ります。Microsoftの公式移行ガイドでは、以下を事前作業として挙げています。

  1. バックアップを取る(作業前の絶対条件。取り方はバックアップのベストプラクティスを参照)
  2. 全テーブルに主キーとインデックスを設定する(主キーのないテーブルは移行後の更新・削除操作に支障が出る)
  3. Attachment型フィールドを削除する(SSMAは変換できない)
  4. 主キーと外部キーのリレーションシップを確認する

主キーのないテーブルがある場合は、SSMA実行前に設定してください。自動採番の主キー(オートナンバー型)を追加するだけでよいケースが多いです。

SSMAを使ったデータ移行の手順

SSMAはMicrosoftが無償で提供している移行ツールで、AccessのテーブルとデータをSQL Serverに変換・転送します(SSMA for Access — Microsoft Learn)。フォーム、レポート、マクロ、VBAモジュールはSSMAの変換対象外で、これらはAccess側に残ります。

  1. SSMAをMicrosoftのダウンロードページ(aka.ms/ssmaforaccess)から入手してインストールする
  2. SSMAを起動し、新規プロジェクトを作成する。移行先でSQL Serverを選択する
  3. 移行元のAccess(.accdbまたは.mdb)をプロジェクトに追加する
  4. 移行先のSQL Server Expressに接続する(インスタンス名・認証情報が必要)
  5. 変換レポートを作成して「何が変換できないか」を事前に確認する
  6. スキーマの変換を実行し、変換結果をSQL Serverにロードする
  7. データの移行を実行してAccessからSQL Serverにデータを転送する
  8. 必要に応じてAccessのテーブルをSQL Serverのリンクテーブルに切り替える

パラメータなしの単純なSELECTクエリはビューに変換されますが、パラメータ付きクエリ・クロス集計クエリ・アクションクエリは変換されません。変換レポートで確認して、手動対処が要るものをリストアップしておくと後の作業がスムーズです。

SQL Server Expressを移行先として選ぶ場合でも、SSMAの手順はSQL Server Standard以上と変わりません。接続先のインスタンスがExpressである点を除けば、ツールの操作は同じです。

移行後:AccessフロントエンドをSQL Serverに接続する

データをSQL Server Expressに移した後も、AccessのフォームやレポートはAccess側に残ります。「Accessを丸ごと廃止してSQL Serverに置き換える」わけではなく、Access(フロントエンド)+ SQL Server Express(バックエンド)という2層構成になります。

接続にはリンクテーブルを使います。Accessの「外部データ」タブからODBCデータソースを追加してSQL Serverに接続し、テーブルをリンクすることで既存フォームの継続利用が可能になりますが、動作検証と修正は必要です。特に次の点に注意が要ります。

  • VBAの接続文字列がローカルのAccdbを参照している箇所はSQL Server向けに書き直す必要がある
  • Accessのパラメータクエリがリンクテーブルに対して想定通りに動くか検証が必要(当社の経験ではDate型の扱いに差異が出ることが多い)
  • AccessのローカルテーブルとSQL Serverのリンクテーブルを同一クエリで結合する「混在クエリ」はパフォーマンスが悪化しやすいため、できる限り解消する

パススルークエリを使うと、AccessのクエリをSQL Serverに直接送れます。AccessはSQL文を変換せずSQL Server(Transact-SQL)に渡すため、サーバー側で処理できてパフォーマンスが改善するケースがあります。ただし、パススルークエリを選択するとクエリデザイングリッドが非表示になりSQL Viewでの編集に変わります(Microsoft公式の解説)。

ExpressからStandard以上へのアップグレードパス

データが容量上限に近づいてきたり、可用性要件が上がったりした場合は、Standard以上に移行することになります。SQL Server Setupのウィザードから「エディションアップグレード」を選ぶことで、同一インスタンスをExpressからStandard以上に変更できます(エディション変更手順 — Microsoft Learn)。Expressを使い始める段階で、この先にStandard移行があり得ることを念頭に置いておくと、設計上の無駄が減ります。

Expressでは動かせないSQL Server Agentや、バックアップの暗号化(Expressでは非対応)が必要になったタイミングも、Standard以上への切り替え時期の目安になります。エディションアップグレード後はSQL Server AgentサービスをWindowsサービス管理コンソール(SCM)から有効化し、SQL Server Configuration Managerでサービスアカウントを設定する追加手順が要ります。

よくある質問

Q. SQL Server ExpressはAccessの完全な代替になりますか。

なりません。SQL Server Expressはデータを格納するエンジンであり、Accessのフォーム・レポート・VBAに相当する機能はありません。「Expressに移したらAccessが不要になる」という期待は誤解です。現実的な構成は、AccessフロントエンドとSQL Serverバックエンドの組み合わせです。AccessのUIを完全に置き換えたい場合は、Power Apps・Webシステム・Windowsアプリケーションなど別の選択肢になります。

Q. 容量上限に引っかかったらどうなりますか。

上限に近づいたら早めにStandard以上への移行を計画してください。SQL Serverでは容量上限を超えるデータの書き込みは失敗します。上限超過直前での対処は時間的な余裕がなくなりやすく、早期に計画するほど安全です。Expressのデータがどのくらいのペースで容量を消費しているか、定期的にデータサイズを確認する運用を組んでおくことをおすすめします。

Q. SQL Server Expressにアップサイジングするとアクセス速度は改善しますか。

当社の経験上、Access共有ファイル方式より改善することが多いです。ただし劇的な変化が起きるかはデータ量・同時接続数・クエリの書き方によって変わります。混在クエリ(AccessローカルテーブルとSQL Serverリンクテーブルの結合)が残っていると、むしろ遅くなるケースもあります。移行後にパフォーマンスが出ない場合は、クエリの見直しが先決です。

Q. 自分たちのAccessがSQL Server Expressで動く構成かどうか確認したい。

データサイズや同時利用者数、クエリの複雑さによって向き・不向きが変わります。無料の解析可否チェックで現状のAccessの構成を確認するところから始めることができます。ファイルの送信は不要です。

触れないAccessが「診断できるか」だけ、確かめませんか。

顧客データは送信不要。発注の義務もありません。

約2分・ファイル送信不要・発注義務なし/説明はオンライン・売り込みはしません