こんにちは、なかぜんです。
Accessで長年運用してきたデータベース、データ量やユーザー数が増えてくると「そろそろ限界かも…」と感じること、ありませんか?
そんなときに頼れるのがSQL Serverへの移行です。
今回は、AccessをSQL Serverに「完全移行」する方法と注意点を、業務で使えるレベルでやさしく丁寧にご紹介します。
「やってみたい!でも難しそう…」という方も安心してください。なかぜんと一緒に、ステップ・バイ・ステップで進めていきましょう。
AccessからSQL Serverへ移行する全体の流れ
1. SQL Serverの準備
まずはSQL Server(Express版でもOK)をインストールし、接続確認をします。SSMS(SQL Server Management Studio)もインストールしておくと便利です。
2. Accessの「Upsizing」機能を活用
Accessには「SQL Serverへ移行」ウィザードがあります(外部データ → ODBCデータベース)。これを使ってテーブルをSQL Serverにアップサイジング(移行)します。
例:Accessからテーブル「T_商品」を移行する場合の手順
- Accessで「T_商品」を右クリック → 「エクスポート」→「ODBCデータベース」を選択
- SQL Server用のDSN(データソース名)を指定
- 移行完了後、リンクテーブルが作成される
3. クエリとフォーム、レポートの見直し
AccessのクエリはSQL Server向けに最適化が必要になる場合があります。たとえば、IIf()
関数やNz()
関数はSQL Serverでは動かないため、T-SQLに書き換える必要があります。
Access VBAとSQL Serverの接続コード例
以下は、VBAでSQL Serverに接続してレコードを取得する例です。
' ADOを使ってSQL Serverに接続
Dim conn As Object
Dim rs As Object
Set conn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")
conn.Open "Provider=SQLOLEDB;Data Source=サーバー名;Initial Catalog=データベース名;Integrated Security=SSPI;"
rs.Open "SELECT * FROM T_商品", conn
Do While Not rs.EOF
Debug.Print rs!商品名
rs.MoveNext
Loop
rs.Close
conn.Close
Set rs = Nothing
Set conn = Nothing
ポイント:
– DSNを使わず、接続文字列で直接接続できる
– Windows認証(Integrated Security=SSPI)を利用することで、セキュリティも安心
Accessからの移行で注意すべきポイント
- 主キー・インデックスの確認:移行時に正しく設定されていないと、パフォーマンス低下や重複エラーの原因に。
- AutoNumber(オートナンバー)→ IDENTITY型:自動採番はSQL Serverでは
IDENTITY
を使います。 - テーブルのリレーションシップ:Access内で設定されていたリレーションは、SQL Server側でも再定義が必要。
- 日付形式の違い:SQL Serverは
datetime
やdatetime2
を使用。Accessとは若干精度が異なるので注意。
応用編:SQL Serverの利点を最大限活かす
ストアドプロシージャを使う
複雑な処理やトランザクション制御は、SQL Serverのストアドプロシージャで実装しましょう。AccessからはADOで呼び出せます。
' ストアドプロシージャの呼び出し例
Dim cmd As Object
Set cmd = CreateObject("ADODB.Command")
With cmd
.ActiveConnection = conn
.CommandText = "sp_在庫更新"
.CommandType = 4 'adCmdStoredProc
.Parameters.Append .CreateParameter("@商品ID", 3, 1, , 1001)
.Execute
End With
ビューを使ったパフォーマンス改善
頻繁に使う集計クエリは、SQL Server側でビューに変換すると高速化できます。Accessからはリンクテーブルとして扱えます。
まとめ:Accessからの一歩が、大きな業務改善につながる
Accessでの業務アプリに限界を感じたら、SQL Serverへの移行は非常に有効な選択です。
テーブルの移行だけでなく、クエリやフォームの見直しも必要ですが、一度整備すれば処理速度・信頼性・将来の拡張性が格段に向上します。
なかぜんとしては、「まず1テーブルだけでも移行して試す」のがオススメです。失敗しても元に戻せるように、バックアップを取ってからチャレンジしてみてくださいね。
