時間の経過とともに、ほとんどのデータベース アプリケーションは拡大し、複雑になり、より多くのユーザーをサポートする必要があります。 Microsoft Office Access アプリケーションの有効期間のある時点で、パフォーマンス、スケーラビリティ、可用性、セキュリティ、信頼性、回復性を最適化するために、Microsoft SQL Server データベースへのアップサイズを検討することをお勧めします。
この記事の内容
Microsoft Office Access データベースのアップサイズについて
アップサイズアップとは、一部またはすべての データベース オブジェクト を Access データベースから新しいまたは既存のSQL Server データベースまたは新しい Access プロジェクト (.adp) に移行するプロセスです。
データベースをSQL Serverにアップサイズする利点
-
高パフォーマンスとスケーラビリティ 多くの場合、SQL Serverは Access データベースよりも優れたパフォーマンスを提供します。 SQL Serverでは、2 ギガバイトの Access データベースの現在の制限よりもはるかに大きい、テラバイトサイズの非常に大きなデータベースのサポートも提供します。 最後に、SQL Serverは、クエリを並列で処理し (1 つのプロセス内で複数のネイティブ スレッドを使用してユーザー要求を処理する)、さらに多くのユーザーが追加されたときに追加のメモリ要件を最小限に抑えることで、非常に効率的に機能します。
-
可用性の向上 SQL Serverを使用すると、データベースを使用中にデータベースの動的バックアップ (増分バックアップまたは完全バックアップ) を実行できます。 その結果、データをバックアップするために、ユーザーにデータベースへのアクセスを強制的に終了してもらう必要はありません。
-
セキュリティの強化 信頼された接続を使用して、SQL Serverは Windows システム セキュリティと統合して、ネットワークとデータベースへの 1 つの統合アクセスを提供し、両方のセキュリティ システムを最大限に活用できます。 これにより、複雑なセキュリティ スキームの管理がはるかに簡単になります。
-
即時復旧可能性 システム障害 (オペレーティング システムのクラッシュや停電など) の場合、SQL Serverには、データベース管理者の介入なしで、データベースを最後の整合性状態まで数分で復旧する自動復旧メカニズムがあります。
-
サーバー ベースの処理 クライアント/サーバー構成でSQL Serverを使用すると、結果をクライアントに送信する前にサーバー上のデータベース クエリを処理することで、ネットワーク トラフィックが削減されます。 通常、サーバーで処理を実行する方がはるかに効率的です。特に大きなデータ セットを操作する場合です。
アプリケーションでは、ユーザー定義関数、ストアド プロシージャ、トリガーを使用して、クライアントではなく、アプリケーション ロジック、ビジネス ルールとポリシー、複雑なクエリ、データ検証、参照整合性コードを一元化して共有することもできます。
アップサイズする方法
アップサイズウィザードは、Access データベースから新しいデータベースまたは既存のSQL Server データベースに、データベース オブジェクトと格納されているデータを移動します。
アップサイズ ウィザードを使用するには、次の 3 つの方法があります。
-
クライアント/サーバー アプリケーションを作成できるように、Access データベースのすべてのデータベース オブジェクトを Access プロジェクトにアップサイズします。 この方法では、追加のアプリケーションの変更と、コードと複雑なクエリの変更が必要です。
-
Access データベースから SQL Server データベースへのデータまたはデータ定義のみをアップサイズします。
-
フロントエンド/バックエンド アプリケーションを作成できるように、SQL Server データベース バックエンドへの Access データベース フロントエンドを作成します。 この方法では、コードで Access データベース エンジン (ACE) がまだ使用されているため、アプリケーションの変更がほとんど必要ではありません。
Access データベースをアップサイズする前に
Access データベースを SQL Server データベースまたは Access プロジェクトにアップサイズする前に、次の操作を検討してください。
-
データベースをバックアップする アップサイズウィザードでは Access データベースからデータやデータベース オブジェクトは削除されませんが、アップサイズする前に Access データベースのバックアップ コピーを作成することをお勧めします。
-
十分なディスク領域があることを確認する アップサイズのデータベースを含むデバイスには、十分なディスク領域が必要です。 使用可能なディスク領域が十分にある場合は、アップサイズウィザードが最適に動作します。
-
一意のインデックスを作成する リンク テーブルには、Access で更新可能な一意のインデックスが必要です。 アップサイズウィザードでは、既存の一意のインデックスをアップサイズできますが、存在しないインデックスを作成することはできません。 テーブルを更新できるようにする場合は、アップサイズを変更する前に、各 Access テーブルに一意のインデックスを追加してください。
-
SQL Server データベースに適切なアクセス許可を割り当てる
-
既存のデータベースにアップサイズするには、CREATE TABLE と CREATE DEFAULT アクセス許可が必要です。
-
新しいデータベースを構築するには、CREATE DATABASE アクセス許可と、マスター データベース内のシステム テーブルに対する SELECT アクセス許可が必要です。
-
Access 2007 アップサイズウィザードは、Microsoft SQL Server 2000 および SQL Server 2005 と連携するように最適化されています。
アップサイズ ウィザードを使用する
-
[データベース ツール] タブの [データの移動] グループで、[SQL Server] をクリックします。
アップサイズ ウィザードが起動します。
手順 1: 既存のデータベースまたは新しいデータベースにアップサイズすることを選択する
ウィザードの最初のページで、Access データベースを既存のSQL Server データベースにアップサイズするか、新しいSQL Server データベースを作成するかを指定します。
-
既存のデータベースを使用する このオプションを選択し、[次へ] をクリックすると、[データ ソースの選択] ダイアログ ボックスが表示され、既存のSQL Server データベースへの ODBC 接続を作成できます。
ODBC データ ソースについて
データ ソースは、データにアクセスするために必要な接続情報と組み合わせたデータのソースです。 データ ソースの例としては、Access、SQL Server、Oracle RDBMS、スプレッドシート、テキスト ファイルなどがあります。 接続情報の例には、サーバーの場所、データベース名、ログオン ID、パスワード、データ ソースに接続する方法を説明するさまざまな ODBC ドライバー オプションなどがあります。
ODBC アーキテクチャでは、アプリケーション (Access や Microsoft Visual Basic プログラムなど) が ODBC ドライバー マネージャーに接続します。これにより、特定の ODBC ドライバー (Microsoft SQL ODBC ドライバーなど) を使用してデータ ソース (この場合はSQL Server データベース) に接続します。 Access では、ODBC データ ソースを使用して、組み込みのドライバーがない Access の外部のデータ ソースに接続します。
これらのデータ ソースに接続するには、次の操作を行う必要があります。
-
データ ソースが含まれているコンピューターに、適切な ODBC ドライバーをインストールします。
-
Microsoft Windows レジストリまたは DSN ファイルに接続情報を保存するために ODBC データ ソース アドミニストレーターを使用するか、接続情報を ODBC ドライバー マネージャーに直接渡すための Visual Basic コードの接続文字列を使用して、データ ソース名 (DSN) を定義します。
マシン データ ソース
マシン データ ソースは、ユーザー定義名を持つ特定のコンピューター上の Windows レジストリに接続情報を格納します。 マシン データ ソースは、それらが定義されているコンピューター上でのみ使用できます。 ユーザーとシステムの 2 種類のコンピューターのデータ ソースがあります。 ユーザー データ ソースは、現在のユーザーのみが使用でき、そのユーザーにのみ表示されます。 システム データ ソースは、コンピューター上のすべてのユーザーが使用でき、コンピューターのすべてのユーザーとシステム全体のサービスに表示されます。 ログオンしているユーザーのみがマシン データ ソースを表示でき、リモート ユーザーが別のコンピューターにコピーすることはできないために、マシン データ ソースはセキュリティを強化する場合に特に便利です。
ファイル データ ソース
ファイル データ ソース (DSN ファイルとも呼ばれます) は、Windows レジストリではなく、テキスト ファイルに接続情報を保存し、通常はマシン データ ソースより柔軟に使用できます。 たとえば、ファイル データ ソースを正しい ODBC ドライバーを使用して任意のコンピューターにコピーして、アプリケーションが使用するすべてのコンピューターに対して一貫性のある正確な接続情報を利用できるようにします。 または、単一のサーバー上にファイル データ ソースを配置し、ネットワーク上の多くのコンピューターの間でそれを共有し、1 つの場所で簡単に接続情報を維持することができます。
ファイル データ ソースも共有不可にすることができます。 共有不可能なファイル データ ソースは 1 台のコンピューター上に存在し、マシン データ ソースを指します。 共有不能なファイル データ ソースを使用して、ファイル データ ソースから既存のマシン データ ソースにアクセスすることができます。
接続文字列
モジュールでは、接続情報を指定する書式設定された接続文字列を定義できます。 接続文字列は、接続情報を ODBC Driver Manager に直接渡し、システム管理者またはユーザーがデータベースを使用する前に DSN を最初に作成するという要件を削除することで、アプリケーションを簡略化するのに役立ちます。
-
-
新しいデータベースを作成する このオプションを選択し、[次へ] をクリックすると、新しいSQL Server データベースに関する情報を入力するページが表示されます。
-
このデータベースに使用するSQL Serverは何ですか? 使用するサーバーの名前を入力します。
-
セキュリティ接続を使用する 信頼された接続を使用できます。つまり、windows オペレーティング システムのセキュリティと統合SQL Server、ネットワークとデータベースへの 1 つのログオンを提供できます。
-
ログイン ID とパスワード 信頼された接続を使用しない場合は、サーバーに対する CREATE DATABASE 特権を持つアカウントのログオン ID とパスワードを入力します。
-
新しいSQL Server データベースに名前を付ける方法 新しいSQL Server データベースの名前を入力します。 既存のデータベース名と競合し、番号付きサフィックス (mydatabase 1 など) を追加すると、名前が変更されます。
-
手順 2: アップサイズするテーブルを選択する
この手順では、SQL Server データベースにアップサイズする Access テーブルを選択します。 アップサイズするテーブルを選択し、矢印ボタンを使用して[エクスポート] リストに移動SQL Server。 または、テーブルをダブルクリックして、一方のリストから別のリストに移動することもできます。
[使用可能なテーブル] の一覧には、SQL Server データベースに既に存在SQL Serverテーブルを除くすべてのリンク テーブルが含まれます。 アップサイズを設定するために選択されたSQL Server データベースを指すリンク テーブルは、[エクスポート先] リスト ボックスSQL Server自動的に表示され、削除できません。 ナビゲーション ウィンドウ に現在表示されていないテーブルも、非表示のテーブルやシステム テーブルを含めて除外されます。
ヒント: "_local" で終わる名前を持つテーブルは、既にアップサイズされたテーブルのアップサイズを防ぐために、使用可能なテーブルの一覧から除外されます。 これらのテーブルを再びアップサイズする場合は、サフィックス "_local" を削除してアップサイズ ウィザードを実行する前に、テーブルの名前を変更します。
手順 3: アップサイズする属性とオプションを指定する
この手順では、SQL Server データベースにアップサイズするテーブル属性を選択します。 既定では、すべての属性が既定でアップサイズのために選択されます。
注: 既定では、アップサイズウィザードは Access フィールド名を有効なSQL Serverフィールド名に変換し、Access データ型を同等のSQL Serverデータ型に変換します。
どのテーブル属性をアップサイズしますか?
次の表に、アップサイズ可能な属性の一覧と、アップサイズウィザードが各属性を処理する方法を示します。
属性 |
選択した場合のアクション |
|||||||||||||||
インデックス |
アップサイズウィザードは、すべてのインデックスをアップサイズします。 アップサイズウィザードは、Access 主キーをSQL Serverインデックスに変換し、それらをSQL Server主キーとしてマークします。 アップサイズされたSQL Server テーブルを Access データベースにリンクする場合、アップサイズウィザードによってインデックス名にプレフィックス "aaaaa" も追加されます。 これは、Access によって、使用可能なインデックスの一覧の最初のアルファベット順のインデックスが主キーとして選択され、"aaaaa" プレフィックスによって適切なインデックスが確実に選択されるためです。 無効な文字が "_" 文字に置き換えられる場合を除き、他のすべてのインデックスは名前を保持します。 一意の Access インデックスと一意でない Access インデックスは、一意のインデックスと一意でないSQL Serverインデックスになります。 リンク テーブルには、Access で更新可能な一意のインデックスが必要です。 アップサイズウィザードでは、既存の一意のインデックスをアップサイズできますが、存在しないインデックスを作成することはできません。 テーブルのデータをアップサイズ後に更新できるようにするには、アップサイズする前に、各 Access テーブルに一意のインデックスを追加してください。 |
|||||||||||||||
検証規則 |
アップサイズウィザードでは、更新トリガーと挿入トリガーとして次のサイズがアップサイズされます。
トリガーは、SQL Server テーブルに関連付けられた一連の Transact-SQL ステートメントです。 テーブルには、テーブル内のデータを変更できるコマンドごとに 1 つずつ、UPDATE、INSERT、DELETE コマンドの 3 つのトリガーを使用できます。 トリガーは、コマンドの実行時に自動的に実行されます。 アップサイズウィザードでは、SQL Serverルールではなくトリガーを使用してフィールド レベルの検証を適用します。SQL Serverルールではカスタム エラー メッセージを表示できないためです。 各検証ルールには、必ずしもトリガーとの 1 対 1 の対応があるとは限りません。 各検証規則は複数のトリガーの一部となり、各トリガーには、いくつかの検証規則の機能をエミュレートするコードが含まれている場合があります。 Access フィールドの Required プロパティを true に設定すると、ユーザーはレコードを挿入できず、必要なフィールドを null のままにすることも (フィールドに既定のバインドがない場合)、レコードを更新するときにフィールドを null にすることもできません。 必須フィールドは、SQL Serverで Null 値を許可しないフィールドにアップサイズされます。 ValidationText/エラーメッセージ Access データベースの [検証テキスト] プロパティは、Access プロジェクトの [検証テキスト] プロパティに変換されます。 これにより、実行時に制約違反が発生した場合に Access フレンドリ エラー メッセージを表示できます。 |
|||||||||||||||
既定値 |
アップサイズ ウィザードは、すべての 既定値 プロパティを米国標準協会 (ANSI) の既定のオブジェクトにアップサイズします。 |
|||||||||||||||
テーブル リレーションシップ |
アップサイズウィザードは、すべてのテーブルリレーションシップをアップサイズします。 更新、挿入、または削除トリガーを使用するか、宣言された参照整合性 (DRI) を使用して、テーブルリレーションシップと参照整合性をアップサイズする方法を決定できます。 DRI は、ベース テーブルの主キー制約 (一対多リレーションシップの "1" 側) と外部テーブルの外部キー制約 (通常は一対多リレーションシップの "多" 側) を定義することで、Access 参照整合性と同じように機能します。
|
どのようなデータ オプションを含めますか?
-
テーブルにタイムスタンプ フィールドを追加する SQL Serverでは、タイムスタンプ フィールドを使用して、一意の値フィールドを作成し、レコードが更新されるたびにこのフィールドを更新することで、レコードが変更されたことを示します (変更された場合は変更されなかった)。 リンク テーブルの場合、Access はタイムスタンプ フィールドの値を使用して、レコードが更新前に変更されたかどうかを判断します。 一般に、タイムスタンプ フィールドは最高のパフォーマンスと信頼性を提供します。 タイムスタンプ フィールドがない場合、SQL Serverレコード内のすべてのフィールドをチェックして、レコードが変更されたかどうかを判断する必要があります。これにより、パフォーマンスが低下します。
次の表では、この一覧で使用できる設定について説明します。
設定 |
説明 |
はい。ウィザードで決定します |
元の Access テーブルに浮動小数点 (単一または二重)、メモ、または OLE オブジェクト フィールドが含まれている場合、アップサイズウィザードは、それらのフィールドの結果のSQL Serverテーブルに新しいタイムスタンプ フィールドを作成します。 |
はい、常に |
アップサイズ ウィザードでは、含まれているフィールドの種類に関係なく、アップサイズされたすべてのテーブルのタイムスタンプ フィールドが作成されます。 これにより、メモ、OLE オブジェクト、または浮動小数点フィールドが含まれていない可能性があるが、他の型のフィールドを持つアップサイズの Access テーブルのパフォーマンスが向上します。 |
いいえ、決して |
アップサイズ ウィザードでは、テーブルにタイムスタンプ フィールドは追加されません。 |
重要: リンクされたSQL Server テーブルでは、メモまたは OLE オブジェクト のフィールドが変更されたかどうかを判断するチェックはありません。これらのフィールドのサイズはメガバイト数が多く、比較にネットワークが集中しすぎて時間がかかる可能性があるためです。 したがって、テキストフィールドまたは画像フィールドのみが変更され、タイムスタンプフィールドがない場合、Access は変更を上書きします。 また、浮動小数点フィールドの値が変更されていない場合は変更されているように見える可能性があるため、タイムスタンプ フィールドがない場合、レコードが変更されていない場合は、Access によってレコードが変更されたと判断される場合があります。
-
テーブル構造のみを作成し、データをアップサイズしない アップサイズウィザードでは、すべてのデータが既定でSQL Serverにアップサイズされます。 [テーブル構造の作成のみ]を選択した場合は、[データチェックサイズを上げないでください。データ構造のみがアップサイズされます。
手順 4: アプリケーションをアップサイズする方法を選択する
ウィザードの次のページで、Access データベース アプリケーションをアップサイズする 3 つの異なる方法のいずれかを選択できます。 [ どのようなアプリケーションの変更を行うか] で、次のいずれかのオプションを選択します。
-
新しい Access クライアント/サーバー アプリケーションを作成する このオプションを選択すると、アップサイズウィザードによって新しい Access プロジェクトが作成されます。 アップサイズウィザードでは、名前の入力を求められます。既定では現在の Access データベース名に設定され、"CS" サフィックスが追加され、プロジェクトが既存の Access データベースと同じ場所に格納されます。
アップサイズウィザードによって Access プロジェクト ファイルが作成され、Access データベースから Access プロジェクトにすべてのデータベース オブジェクトがアップサイズされます。 パスワードとユーザー ID を保存しない場合、Access プロジェクトを初めて開くと、[データ リンクのプロパティ] ダイアログ ボックスが表示され、SQL Server データベースに接続できるようになります。
-
SQL Server テーブルを既存のアプリケーションにリンクする このオプションを選択すると、アップサイズウィザードによって Access データベースが変更され、クエリ、フォーム、レポート、およびデータ アクセス ページでは、Access データベース内のデータではなく、新しいSQL Server データベース内のデータが使用されます。 アップサイズウィザードでは、アップサイズする Access テーブルの名前がサフィックス "_local" で変更されます。 たとえば、Employees という名前のテーブルをアップサイズした場合、テーブルの名前は Access データベースEmployees_local変更されます。 次に、アップサイズウィザードによって、Employees という名前のリンクされたSQL Server テーブルが作成されます。
注: アップサイズ操作が完了すると、"_local" サフィックスで名前が変更されたテーブルは使用されなくなります。 ただし、アップサイズが成功したことを確認するまで、ローカル テーブルを保持することをお勧めします。 後で、ローカル テーブルを削除して、Access データベースのサイズを小さくすることができます。 テーブルを削除する前に、必ずデータベースをバックアップしてください。
元の Employees テーブルに基づくクエリ、フォーム、レポート、データ アクセス ページで、リンクされたSQL Server Employees テーブルが使用されるようになりました。 元のローカル テーブルのフィールドのプロパティの多くは、 Description、 Caption、 Format、 InputMask、 DecimalPlaces など、新しいローカル テーブルによって継承されます。
-
アプリケーションの変更なし データを SQL Server データベースにのみコピーし、既存の Access データベース アプリケーションに他の変更を加えない場合は、このオプションを選択します。
パスワードとユーザー ID を保存する 既定では、アップサイズ ウィザードは、既存のアプリケーションにリンク テーブルを作成するか、ユーザー名とパスワードを保存せずに Access プロジェクトを作成します。 つまり、ユーザーは、SQL Server データベースにログオンするたびにユーザー名とパスワードの入力を求められます。
[パスワードとユーザー ID の保存] を選択すると、ユーザーはログインせずにSQL Server データベースに接続できます。 [Create new Access client/server application]\(新しい Access クライアント/サーバー アプリケーションの作成\) を選択した場合、Access プロジェクトは OLE DB 接続文字列にユーザー名パスワードを格納します。
注: リンクされたSQL Server テーブルが MSysConf テーブルで構成され、パスワードの保存を拒否する場合、このオプションは [アプリケーションの変更なし] オプションで無効になります。
アップサイズ ウィザード レポート
[完了] をクリックすると、アップサイズウィザードによって、作成されたすべてのオブジェクトの詳細な説明を提供するレポートが作成され、プロセス中に発生したエラーが報告されます。 アップサイズウィザードでは、レポートが印刷プレビューに表示され、レポートを印刷または保存できます (XPS や PDF ファイルなど)。 [印刷プレビュー] ウィンドウを閉じると、レポートは Access オブジェクトとして保存されません。
アップサイズ ウィザード レポートには、次の情報が含まれています。
-
アップサイズを選択したテーブル属性やアップサイズ方法など、アップサイズパラメーター。
-
名前、データ型、インデックス、検証規則、既定値、トリガー、タイム スタンプが追加されたかどうかの Access 値とSQL Server値の比較を含むテーブル情報。
-
データベースまたはトランザクション ログがいっぱい、アクセス許可が不十分、デバイスまたはデータベースが作成されていない、テーブル、既定、または検証ルールがスキップされた、リレーションシップが強制されていない、クエリがスキップされた (構文に変換できないため)、フォームとレポートで変換エラーを SQL Server コントロールレコード ソース など、発生したエラー。
データベース オブジェクトがアップサイズされる方法
次のデータ オブジェクトとデータベース オブジェクトがアップサイズされます。
-
データ型とデータ型 Access データベースのすべてのデータ型は、SQL Serverで同等のものに変換されます。 ウィザードでは、すべての文字列値に Unicode 文字列識別子を追加し、Unicode n プレフィックスをすべてのデータ型に追加することで、Access データベーステキストを Unicode に変換します。
-
クエリ
-
ORDER BY 句を持たないクエリを選択するか、パラメーターをビューに変換します。
-
アクション クエリは、ストアド プロシージャ アクション クエリに変換されます。 パラメーター宣言コードの後に SET NOCOUNT ON が追加され、ストアド プロシージャが確実に実行されます。
-
パラメーターまたは ORDER BY 句を使用するテーブルのみを参照するクエリ (基本クエリとも呼ばれます) を選択すると、ユーザー定義関数に変換されます。 必要に応じて、ORDER BY 句を含むクエリに TOP 100 PERCENT 句が追加されます。
-
名前付きパラメーターを使用するパラメーター クエリは、Access データベースで使用される元のテキスト名を保持し、ストアド プロシージャまたはインライン ユーザー定義関数のいずれかに変換されます。
注: SQL パススルー クエリ、データ定義クエリ、クロス集計クエリなど、アップサイズしなかったクエリを手動で変換する必要がある場合があります。 また、入れ子になったクエリの深さも手動でアップサイズする必要があります。
-
-
Forms、レポート、コントロール フォーム、レポート、またはコントロールの RecordSource、ControlsSource、RowSource プロパティの SQL ステートメントは保持され、ストアド プロシージャやユーザー定義関数には変換されません。
-
スタートアップ プロパティ アップサイズウィザードでは、次のスタートアップ プロパティがアップサイズされます。
StartUpShowDBWindow
StartUpShowStatusBar AllowShortcutMenus AllowFullMenus AllowBuiltInToolbars AllowToolbarChanges AllowSpecialKeys UseAppIconForFrmRpt AppIcon AppTitle StartUpForm StartUpMenuBar StartupShortcutMenuBar -
モジュールとマクロ アップサイズウィザードでは、モジュールやマクロは変更されません。 SQL Serverの機能を最大限に活用するには、アプリケーションの変更が必要な場合があります。 詳細については、MSDN の記事「SQL Serverにリンクされた Microsoft Office Access アプリケーションの最適化」を参照してください。