スポンサーリンク

クラウド化に悩むあなたへ。AccessとAzure SQLは両立できる?

スポンサーリンク
Access
スポンサーリンク

こんにちは、なかぜんです。
最近「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でのリンク手順:

  1. Accessで「外部データ」タブ →「ODBC データベース」→「リンクテーブル」を選択
  2. 上記接続文字列を使ってDSNレス接続またはシステムDSNを作成
  3. 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でのリンクから試してみましょう。

それでは、なかぜんでした😊