SQL Server × Access

Access × Azure SQL Database:クラウドDBとのハイブリッド運用

nanikatoaccess

以下では、「Access × Azure SQL Database:クラウドDBとのハイブリッド運用」をテーマに、Microsoft AccessとAzure SQL Databaseを組み合わせたシステム構成のメリットや導入ステップ、運用時のポイントを解説します。オンプレミスにあるAccessフロントエンドを活かしつつ、クラウド上のAzure SQL Databaseをバックエンドにすることで、スケーラビリティや災害対策を強化しながら、既存の使いやすい操作性を維持できます。


1. なぜAzure SQL Databaseを組み合わせるのか?

Azure SQL Databaseは、MicrosoftのクラウドプラットフォームAzure上で提供されるPaaS型のSQL Server互換データベースです。オンプレミスにあるAccessアプリと連携することで、以下のメリットを得られます。

  1. スケーラビリティ
    • データ量や接続ユーザーが増加しても、Azure上でプラン(vCore/DTU)を変更し、処理能力を引き上げられる。
  2. 高可用性と災害対策
    • Azure標準の冗長化や自動バックアップ、Geo-Replicationなどを利用でき、ハードウェア障害や災害リスクが大幅に低減。
  3. 保守負荷の軽減
    • OSやSQL Serverのバージョンアップ、パッチ適用などをAzureが自動で行うため、オンプレミスDBのようなサーバーメンテナンスの手間が少ない。
  4. リモートアクセスの容易化
    • 拠点や在宅ワーク先からでも、適切なネットワーク設定(VPN/ExpressRoute/Private Endpointなど)で安全にDBへ接続できる。

2. 準備:Azure SQL Databaseの作成

  1. Azureポータルにサインイン
  2. リソースの作成 → 「SQL Database」を選択
  3. データベース名、サーバー名、認証情報(管理者ユーザー名・パスワード)を設定
  4. サービス目安(Compute+ストレージ)のプラン(vCoreモデルやDTUモデル)を決める
  5. 作成するとxxxx.database.windows.netのようなサーバー名が発行される

防火壁とネットワーク設定

  • ローカルPCから直接接続する場合、Azure SQL DBのファイアウォール設定でクライアントIPを許可するか、VPNやPrivate Endpointを利用
  • 企業内のActive Directoryと連動する場合は、Azure AD認証も考慮

3. Access側の接続方法:DSNレスリンクとADO

AccessがAzure SQL DBを使用する際、ODBCドライバを使ってリンクテーブルパススルークエリを設定します。

  • ドライバの確認: SQL Server Native Client / OLE DB Driver などが最新かを確認
  • 接続文字列: Driver={SQL Server Native Client 11.0};Server=xxxx.database.windows.net;Database=MyAzureDB;Uid=MyUser;Pwd=MyPass;Encrypt=yes;TrustServerCertificate=no;
ないものはない!お買い物なら楽天市場

3.1 DSNレスリンクテーブルの例(手動設定)

  1. [外部データ]→[新しいデータソース]→[ODBCデータベース]
  2. 「リンク テーブルを作成してデータソースに接続する」を選択
  3. DSN選択で「新しいDSN作成」もしくは「DSNレス接続文字列」を指定
  4. Azure SQL DBのサーバー名、DB名、ユーザーID、パスワードなどを入力
  5. 接続成功後、Azure側のテーブル一覧が表示されるので、リンク対象を選んでOK

セキュリティへの注意

  • SQL認証の場合、接続文字列にID/PWが記載されるので、Accessファイルの取り扱いに注意
  • Windows認証のようにAzure ADを使う場合は、Azure AD認証でパスワードレス化を検討する

3.2 VBAでDSNレス接続(ADO)

Public Sub ConnectToAzure()
Dim cn As Object
Dim rs As Object
Dim strConn As String
Dim strSQL As String

Set cn = CreateObject("ADODB.Connection")
strConn = "Provider=MSOLEDBSQL;" & _
"Data Source=xxxx.database.windows.net;" & _
"Initial Catalog=MyAzureDB;" & _
"User ID=MyUser;" & _
"Password=MyPass;" & _
"Encrypt=yes;TrustServerCertificate=no;"

cn.Open strConn

strSQL = "SELECT * FROM dbo.顧客マスタ WHERE 顧客ID < 10"
Set rs = CreateObject("ADODB.Recordset")
rs.Open strSQL, cn, 1, 3 ' adOpenKeyset, adLockOptimistic

Do Until rs.EOF
Debug.Print "ID=" & rs("顧客ID") & ", 顧客名=" & rs("顧客名")
rs.MoveNext
Loop

rs.Close: Set rs = Nothing
cn.Close: Set cn = Nothing
End Sub
  • Encrypt=yes;TrustServerCertificate=no; を設定し、TLS通信を確保
  • Debug.Print でイミディエイトウィンドウに出力し、動作確認

4. 運用上の注意:ネットワーク・セキュリティ・パフォーマンス

4.1 ネットワークの確保

  • VPNやPrivate Endpointを利用し、インターネット経由ではなく安全な専用経路を確立するとセキュリティが高まる
  • 遅延対策:Azureリージョン(場所)を自社拠点に近いリージョンに選び、不要に遠距離の往復を避ける

4.2 セキュリティ

  • 最小限の権限付与: Azure SQL DB上で、ユーザーにdb_datareader / db_datawriterなど必要最小限のロールだけ与える
  • Azure AD認証: ドメインユーザーとAzure側を同期し、Windows認証に近い形でパスワード管理を簡易化できる
  • DBファイアウォール設定: サブネットやIPを限定

4.3 パフォーマンス最適化

  • Accessの「リンクテーブル」だけで大量データをSELECTするとネットワーク負荷が高くなる
  • パススルークエリストアドプロシージャを使い、サーバー側で集計やJOINを行い、結果だけをAccessに返す
  • 自動スケーリング: Azureではプラン(vCore/DTU)を必要に応じて拡大し、一時的な高負荷に対応する運用も可能

4.4 コスト管理

  • Azureは使った分だけ課金されるモデルのため、ピーク時だけスケールアップ、普段はスケールダウンしてコストを抑えられる
  • サーバーレスオプションを活用して、アイドル時に自動休止させることも検討

5. バックアップ・災害復旧計画

  • 自動バックアップ: Azure SQL Databaseはフル/差分/トランザクションログのバックアップを自動管理
  • Point-in-time Restore: 何か問題があった場合、過去の任意の時点に復元可能
  • Geo-Replication: 別リージョンにレプリカを置き、災害時に迅速切り替え(フェイルオーバー)
  • Accessフロントエンドのバックアップ: .accdb/.accdeファイルもローカルPCやOneDrive/SharePoint等に安全に保管、バージョン管理を行う

6. 実践例:顧客データをAzure SQL DBに移行→Accessから運用

  1. Azure SQL DBを作成(Azureポータル上)
  2. データ移行:
    • 既存のAccessテーブルをエクスポート(Export)し、Azure DBにインポートする
    • もしくはSQL Server Migration Assistant(SSMA) for Accessなどを使って移行
  3. リンクテーブル設定:
    • Access側でAzure DBとODBC接続し、新しいリンクテーブルとして活用
  4. フォーム・レポート修正:
    • リンクテーブルを参照するようにクエリやフォームのレコードソースを変更
  5. 運用開始:
    • マルチユーザーが同時アクセスしても、バックエンドがAzure上にあるので容量や並列処理への耐性が上がる
    • 会社外や在宅勤務からでもVPN経由でクラウドDBへアクセス可能

7. まとめ:Access×Azure SQL Databaseで堅牢かつ柔軟なシステムを

  • Accessの強み: 短期開発・GUIフォーム・レポート、現場レベルでのアプリ修正がしやすい
  • Azure SQL Databaseの強み: 自動スケーリング、高可用性、パッチ管理不要、地理冗長化
  • ハイブリッド運用: 既存のAccessフロントエンドを大幅に作り直すことなく、クラウドDBに移行するだけで大規模化・災害対策を実現
  • 注意点: セキュリティ(VPN/Private Endpoint等)、ネットワーク遅延対策、Azureコスト見積もり

Access単体では物足りなくなった場合も、Azure SQL Databaseと組み合わせることで、小規模から中~大規模へシームレスに拡張できるのが大きなメリットです。オンプレミスのデータ移行やバックエンドのクラウド化を検討する際に、ぜひ本記事を参考にしてみてください。


関連記事

Azureのクラウドパワーを最大限活かしつつ、Accessならではのフォーム/レポート/クエリ操作をユーザーに提供する「ハイブリッド運用」をぜひ試してみてください。快適なDB環境と柔軟な開発効率を同時に手に入れられます。

DMM
ABOUT ME
管理人
管理人
駆け出しブロガー
入社した会社では、Accessを活用した基幹システムが長年運用されていました。しかし、開発者の高齢化により保守が困難となり、システムの維持・更新が急務に。 ほぼAccessに触れたことのなかった私は、ゼロから学びながら基幹システムを再構築してみることに。ついにはAccessによるシステム開発エンジニアとしてのスキルを身につけるまでに成長。 元々の業務のノウハウとそれを効率化するためのツール(Access)によって業務効率化システムをいくつも開発してきました。 みなさんの”なにか(業務のノウハウ)”とAccessで業務効率化を実現するお役に立てれば幸いです。
googleアドセンス
記事URLをコピーしました