はじめに
Microsoft Accessは、アプリケーション開発ツール(フォーム、レポート、クエリ、VBAマクロ)とリレーショナルDBMSを組み込んだ人気のあるデスクトップデータベース管理システムです。 MS Accessは、ローカルエリアネットワークを介してMS Accessデータベースファイルを共有することにより、個々のユーザーまたは少数のユーザーが同時にデータを操作する小規模なワークグループに最適です。
ただし、同時ユーザーの数が少数を超えると、MSAccessでデータの共有に関する問題が発生し始めます。この「スケールアップ」問題の解決策の1つは、MS Accessデータベースを分割し、MicrosoftSQLServerなどのサーバーベースのDBMSでデータをホストすることです。
Microsoftは、データベーステーブルをMSAccessデータベースからSQLServerに移動するのを支援するために、「MSAccess用MicrosoftSQL Server Migration Assistant」(SSMA)と呼ばれる便利なツールを提供しています。このプロセスの実際の手順に入る前に、MSAccessデータベースシステムのアーキテクチャを理解しておくと役に立ちます。このアーキテクチャについては、次のページから説明します。
前提条件
このチュートリアルを進める前に、次のソフトウェアがインストールされていることを確認してください。
このチュートリアルは、Windows764ビットオペレーティングシステムで実行されているMicrosoftAccess2013(64ビットMS Officeから)を使用して作成されました。 MS Access 2010および2016も機能する可能性がありますが、テストされていません。 32ビットのMSAccessには、SSMAを機能させるための適切なサポートがないため、必ずMSOfficeを確認してください。
また、MSAccess2010ランタイムソフトウェアをインストールする必要がある場合もあります。このソフトウェアは元々、MSAccessの完全版をインストールしなくてもMSAccessデータベースファイルを読み取るように設計されていました。 QL Server Migration Assistantは、MS Access 2010ランタイムのデータアクセスオブジェクト(DAO)パーツを使用して、MSAccessファイルを開きます。
サンプルのMSAccessデータベースファイルが提供されています(このファイルへのリンクについては、次のページを参照してください)。
ターゲットデータベース管理システムはMicrosoftSQLServerになります。このチュートリアルでは、SQL Serverインスタンスへの資格情報(ユーザー名、パスワードなど)が必要です。 MS SQL Serverを自分のPCまたはサーバーにインストールするか、自宅または職場で既存のサーバーを使用するか、クラウドベースのサービスを使用してSQLServerをホストすることができます。 GearHostでSQLServerインスタンスを設定するためのチュートリアルは、次の場所にあります:/ getting-started-with-gearhost-for-sql-server-database-development /
2021年以降、GearHostにはFree-TierSQLServerインスタンスがなくなりました。 Microsoft AzureでStudentアカウントを取得し、AzureSQLデータベースを使用してみてください。
また、Microsoft SQL Server Management Studioを使用して、SQLServerを直接探索および操作できるようにする必要があります。 SQL Server ManagementStudioを使用してSQLServerインスタンスに接続し、空のデータベースを作成します。
このチュートリアルでは、GearHostによってホストされているSQLServerインスタンスを使用します。以下のSQLServerManagement Studioオブジェクトエクスプローラーに示すように、testmssqldb1という名前のサンプルデータベースが作成されました。
最後に、SQL Serverに移行する前に、必ずMSAccessデータベースファイルのバックアップを作成してください。
次のセクションでは、MicrosoftAccessデータベースのアーキテクチャを紹介します。
MicrosoftAccessデータベースアーキテクチャ
データベースを使用してデータを格納するほとんどの情報システムは、次の4つの主要コンポーネントで記述できます。
- ユーザーインターフェース –これらは、システムのエンドユーザーが操作するフォーム、レポート、およびクエリです。
- ビジネスロジック –これは、組織が運営するさまざまなビジネスルールを実装するプログラミングコードです。たとえば、1つのプロジェクトで1週間に30時間を超えて従業員を割り当てることはできないというビジネスルールがある場合があります。このルールはプログラミングコードで実装されます。
- データベース管理システム –これはデータベース内のデータを管理するために使用されるソフトウェアです。また、複数のユーザーがデータを安全に操作できるようにする同時実行制御などの機能を備えている場合もあります。 DBMSの例としては、MS Access、MS SQL Server、Oracle、MySQL、Postgresなどがあります。
- データベース –これは実際のデータが保存される場所です。通常、データは一連のデータベーステーブルに編成されます。各テーブルには列とデータレコードがあります。
データベースシステムアーキテクチャ これらの4つのコンポーネントのそれぞれがどのように配置されているかを説明します。多くの場合、「フロントエンド」という用語は、ユーザーインターフェイスおよびビジネスロジックコンポーネントを説明するために使用されます。 「バックエンド」は、DBMSとデータベースで構成されています。
デスクトップDBMSとして、MSAccessはデータベースシステムアプリケーションのすべてのコンポーネントを単一のファイルに保存します。 DBMSソフトウェアは、デスクトップコンピュータで実行されます。次の図に示すように、データ入力フォーム、レポート、およびクエリは、同じMS Accessデータベースファイル(.accdbファイル)内に格納されているデータベーステーブルと相互作用します。
ローカルエリアネットワークを介してMSAccessデータを共有するために、データベースファイルを2つに「分割」できます。 1つのファイルには、データベースアプリケーションのフォーム、レポート、クエリ、およびその他の部分が含まれ、2番目のファイルにはデータベーステーブルとそのデータのみが含まれます。アプリケーションコンポーネント(フォーム、レポートなど)は、2番目のデータベースファイルへの外部リンクを使用して、データを取得および更新します。これを下の図に示します。
ユーザー数が増えると、このデータ共有方法は制限されます。この場合、データベーステーブルをMicrosoftSQLServerに移行できます。この場合も、次の図に示すように、外部リンクを使用してアプリケーションコンポーネント(フォーム、レポートなど)をデータベーステーブルに接続します。
このチュートリアルの焦点は、SQLServerアプローチへのこの「分割」または「アップサイジング」です。
次のセクションでは、データベースの移行を示すために使用されるサンプルのMSAccessデータベースを紹介します。
サンプルの従業員データベース
このチュートリアルでは、このリンクからダウンロードできる単純な従業員データベースを利用します。このデータベースには、Department、Employee、Project、Project_Assignmentの4つのメインテーブルがあります。
テーブル間の関係を以下に示します。
5つのデータ入力フォーム、1つのクエリと1つのレポートがあります。
チュートリアルに進む前に、このデータベースを探索するために数分かかります。探索が終了したら、必ずデータベースファイルを閉じてください。また、今後このチュートリアルを繰り返したい場合に備えて、ファイルのバックアップを作成してください。
このチュートリアルの次のセクションでは、MSAccessユーティリティ用のMicrosoftSQLServer移行アシスタントをダウンロードしてインストールします。
MSAccess用のMicrosoftSQLServer移行アシスタントのダウンロードとインストール
MSAccess用のMicrosoftSQLServer Migration Assistantは、次のMicrosoftWebサイトからダウンロードできます。https://www.microsoft.com/en-us/download/details.aspx?id =54255
ダウンロードをクリックします ボタンをクリックして、新しいファイルを保存します。ファイル名は、Access.7.3.0.msiのSSMAのようなものにする必要がありますが、将来、新しいバージョンが利用可能になる可能性があります。 SSMAforAccess.7.3.0.msiファイルをダブルクリックしてインストーラーを起動します。
ようこそ画面が表示されたら、次へをクリックします ボタンをクリックして次のステップに進みます。
エンドユーザー使用許諾契約書を読み、契約に同意しますをクリックします。 ラジオボタンをクリックしてから、次へをクリックします ボタンをクリックして続行します。
カスタムインストールをクリックします ボタンをクリックしてから、インストールする機能とインストール場所を選択します。インストールするすべての機能を選択し、インストール先(通常はC:ドライブ)を選択します。 次へをクリックします ボタンをクリックして続行します。
この時点で、製品をインストールする準備ができています。 インストールをクリックします ボタンをクリックして続行します。
インストーラーは、インストールを完了するのに数分かかります。その間、以下のようなステータス画面が表示されます。
SSMAのインストールが完了したら、[完了]をクリックします。 ボタン。
SQL Server Migration AssistantforAccessがWindowsの[スタート]メニューに表示されます。 Accessグループ用のSQLServerMigrationAssistantもあります。
SSMAがインストールされたので、MSAccessデータベースを移行できます。これらの手順の概要は次のページにあります。
MSAccessデータベースの移行
MSAccessデータベースのバックアップコピーがあることを確認してください。
Windowsの[スタート]メニューで[MicrosoftSQLServer Migration Assistant for Access]メニュー項目を見つけ、それをクリックしてSSMAを起動します。
SSMAウィザードが表示され、ようこそ画面が表示されます。完了する6つのステップの概要に注意してください。この時点で、MSAccessEmployeeデータベースファイルとMSSQLServerデータベースの資格情報を利用できるようにする必要があります。 次へをクリックします ボタンをクリックして、ウィザードの最初のステップに移動します。
最初のステップは、新しい移行プロジェクトを作成することです。プロジェクトに名前を付けます(この例では、Employee_Database_Migration_Projectを使用します)。プロジェクトを保存するフォルダーを選択します。最後に、ターゲットSQLServerデータベースのSQLServerバージョンを選択します。この例では、SQLServer2016を使用します。終了したら、次へをクリックします ボタン。
次のステップは、移行するMSAccessデータベースを追加することです。この時点で、フォームは空になっているはずです。 データベースの追加をクリックします ボタン。
employee.accdbファイルを含むフォルダーに移動し、そのファイルを選択します。 開くをクリックします ボタン。
これで、employee.accdbファイルが一覧表示されます。 次へをクリックします ボタンをクリックして続行します。
MS Accessデータベースが開かれたので、次のステップは、SQLServerに移行するデータベースの内容を選択することです。通常、移行されるのはテーブルのみであり、これらはデフォルトで選択されている必要があります。また、各テーブルの一部であるインデックスと主キーも移行されることに注意してください。 (テーブルがリストされていない場合は、MS Access 2010ランタイムソフトウェアをインストールして、再試行してください。)
この例では、データベーステーブルがすべて次のように選択されていることを確認してください。 次へをクリックします ボタンをクリックして続行します。
ウィザードの次のステップは、ターゲットSQLServerインスタンスの資格情報を指定することです。 SQLServerの構成に従ってフィールドに入力します。この例では、Gearhost上のSQLServerインスタンスが使用されています。
ホスト名 サーバーのインターネットホスト名またはIPアドレスになります。 SQL ServerがローカルPCまたはサーバーにインストールされている場合は、サーバー名としてlocalhostを使用します。
サーバーポート SQLServerリスナーのポート番号です。これはデフォルトのままにします(SQL Serverでこの構成を変更した場合を除く)。
データベース SQLServerインスタンスに常駐するデータベースの名前になります。この例では、testmssqldb1という名前のサンプルデータベースがサーバー上にすでに作成されています。
認証の方法を選択します SQLServerインスタンス用。この例では、SQLServer認証が使用されます。 SQLServerインスタンスに関連付けられているユーザー名とパスワードを指定する必要があります。
ユーザー名とパスワードを含む残りの資格情報を入力し、接続を暗号化するかどうかにかかわらず、適切なオプションを選択します。
すべての資格情報を入力したら、[次へ]をクリックします ボタン。
この時点で、移行ウィザードは、データベースアプリケーション(フォーム、レポートなど)を結果のSQLServerデータベーステーブルにリンクするように要求します。これはまさにこの場合に必要なことです。 リンクテーブルを確認してください チェックボックスを選択し、次へをクリックします ボタン。
ソースデータが分析され、SQL Serverにロードする準備ができると、[移行ステータス]画面が表示されます。
変換後、すべてのテーブルとそれに関連するインデックスおよびトリガー(存在する場合)のリストを示すダイアログボックスが表示されます。この例では、すべてのテーブルとそれに関連するオブジェクトがSQLServerに移行されます。 OKをクリックします ボタンをクリックして、このダイアログボックスを閉じます。
ウィザードは引き続きテーブルデータを処理し、変換されたオブジェクトをデータベースにロードします。
リンク変換テーブル中 ステップすると、ウィザードはSQLServerの資格情報を再入力するように求めるメッセージを表示する場合があります。これらの資格情報をもう一度入力して、[接続]をクリックします ボタン。
移行ウィザードは続行されます。移行が完了すると、概要画面が表示されます。エラーが発生した場合は、関連するレポートをクリックします。 それらを確認するボタン。完了したら、閉じるをクリックします ボタン。
SSMAのメイン画面が表示されます。 ファイルをプルダウンします メニューからプロジェクトの保存を選択します 現在のプロジェクトを保存します。 従業員を選択します メタデータを抽出して保存するデータベース。
この時点で移行ジョブは完了し、SSMAプログラムを終了できます。
チュートリアルの最後のセクションでは、新しく移行されたMSAccessデータベースアプリケーションを実行する方法を示します。
MSAccessデータベースアプリケーションの実行
MSAccessでemployeedb.accdbデータベースファイルを開きます。元のテーブルの名前が変更されていることに注意してください。たとえば、元の従業員テーブルの名前はSSMA $ employee$localになりました。このテーブルは、引き続きemployeedb.accdbデータベースファイル内に保存されます。
4つの新しいデータベーステーブルリンク 作成されました。これらの名前を参照していた既存のすべてのフォーム、クエリ、およびレポートは、代わりにSQLServerデータベース上の各テーブルへのリンクを参照するようになります。これをテストするには、部門データ入力フォームを開きます。
以下に示すように、「ログイン」または「接続に失敗しました」というエラーメッセージが表示される場合があります。
[OK]ボタンをクリックして、SQLServerインスタンスに適切な資格情報を入力します。次に、 OKをクリックします ボタン。
エンドユーザーの観点からは、フォームの外観や機能に変更はありません。ユーザーが経験する可能性のある唯一の小さな問題は、リクエストをリモートSQL Serverインスタンスに送信する必要があるため、データの大規模なコレクションを開くのがわずかに遅れることです。リモートSQL Serverインスタンスは、結果をパッケージ化してMSAccessデータベースアプリケーションに返す必要があります。
追加のデータ入力フォームのいくつかを開き、それらすべてが正しく機能していることを確認します。
移行されたデータベースの機能が確認されたら、元の(現在は名前が変更されている)テーブルをemployeedb.accdbデータベースファイルから削除できます。この手順の後、employeedb.accdbデータベースファイルをユーザーに配布して、SQLServerインスタンスの中央の場所に保存されているデータの操作を開始できるようにします。