こんにちは、なかぜんです。
最近「Accessで作った業務システム、そろそろクラウドに移行したいけど、完全移行は難しい…」という声をよく聞きます。
そんなときに選択肢として浮上するのが「Azure SQL Databaseとの連携」です。
Accessの使い勝手はそのままに、データだけクラウドに置けるこのパターンは、段階的なクラウド対応にぴったり。
この記事では、実務経験ベースで「Access × Azure SQL」連携の定番パターンをご紹介します。
AccessとAzure SQLの連携パターン
パターン1:ODBCドライバによる直接接続(SQL認証)
もっともシンプルな接続方法です。AccessからAzure SQLへ直接ODBC接続し、テーブルをリンクします。
必要なもの:
- ODBCドライバ(ODBC Driver 17 for SQL Server など)
- Azure SQLの接続情報(サーバー名、DB名、ユーザー名、パスワード)
' ODBC接続文字列の例(SQLログイン方式)
"Driver={ODBC Driver 17 for SQL Server};Server=tcp:your-db.database.windows.net,1433;" & _
"Database=yourDB;Uid=yourUser;Pwd=yourPassword;Encrypt=yes;TrustServerCertificate=no;"
Accessでのリンク手順:
- Accessで「外部データ」タブ →「ODBC データベース」→「リンクテーブル」を選択
- 上記接続文字列を使ってDSNレス接続またはシステムDSNを作成
- Azure SQL上のテーブルを選んでリンク
パターン2:Azure Active Directory 認証での接続
セキュリティ重視の現場では「Azure AD 認証」での接続が求められることもあります。
' AADパスワード認証の例
"Driver={ODBC Driver 17 for SQL Server};Server=tcp:your-db.database.windows.net,1433;" & _
"Database=yourDB;Authentication=ActiveDirectoryPassword;UID=youraccount@yourdomain.com;PWD=yourpassword;"
この方法では、ADに統合されたセキュリティポリシーの中でAccessを扱えるのが魅力です。
VBAで自動リンクを実装する
業務アプリで毎回リンクを手動で設定するのは手間ですよね。VBAで自動化するコード例をご紹介します。
Sub LinkAzureTable()
Dim db As DAO.Database
Dim tdf As DAO.TableDef
Dim strConn As String
strConn = "ODBC;Driver={ODBC Driver 17 for SQL Server};" & _
"Server=tcp:your-db.database.windows.net,1433;" & _
"Database=yourDB;Uid=yourUser;Pwd=yourPassword;" & _
"Encrypt=yes;TrustServerCertificate=no;"
Set db = CurrentDb
On Error Resume Next
db.TableDefs.Delete "T_AzureTest" ' 古いリンクがあれば削除
On Error GoTo 0
Set tdf = db.CreateTableDef("T_AzureTest")
tdf.Connect = strConn
tdf.SourceTableName = "dbo.TableName" ' Azure SQL上のテーブル名
db.TableDefs.Append tdf
MsgBox "Azure SQLとのリンクが完了しました!"
End Sub
解説:
- 接続文字列を変数で指定 → 柔軟な再利用が可能
- 事前に古いリンクを削除 → テスト運用に便利
- TableDefを作成してリンク → 実務でもそのまま使えます
注意点とよくあるミス
- IP制限エラー: Azure SQLはファイアウォール設定が必須です。自分のグローバルIPを許可してから接続を試しましょう。
- DSN未設定: DSNレスで使う場合でも、ドライバ自体がインストールされていないと接続できません。
- パフォーマンス: Access側で大規模なJOINや集計をすると、遅延が発生します。可能な限りAzure SQL側で処理するSQLを使いましょう。
応用ポイント:Azure SQLでビューを定義して連携する
Access側の複雑なクエリを、Azure SQLのビューとして定義しておくと、パフォーマンスもセキュリティも向上します。
-- Azure SQL側で事前にビューを作成
CREATE VIEW v_CustomerOrders AS
SELECT c.CustomerName, o.OrderDate, o.Amount
FROM Customers c
JOIN Orders o ON c.CustomerID = o.CustomerID;
これをAccessでリンクすれば、実行計画はAzure側に任せられ、負荷分散になります。
まとめ:まずは小さく始めて、クラウド化の第一歩を
AccessとAzure SQLの連携は、クラウドへの段階的移行に最適な一歩です。
この記事では次のことを学びました:
- AccessからAzure SQLへの接続方法(ODBC/AAD)
- VBAによるリンク自動化
- 接続エラーの回避ポイント
- パフォーマンス改善のための工夫(ビュー連携)
「やってみたい!」と思った方は、まずはテスト用のAzure SQLインスタンスを作って、VBAでのリンクから試してみましょう。
それでは、なかぜんでした😊
¥1,210 (2025/07/20 11:53時点 | Amazon調べ)
