Sqlserverでの実験も2回目になります。
https://pctips.jp/server/stored-detabase-1/
今回は、
ポイント
データベースを複製してAccessで接続し直してストアドが動くのかの実験
リンクテーブルや、パススルークエリなどをVBAで一括変換可能なのかも検証してみたいと思います。
データベースの複製
対象データベースのバックアップファイルを作成
MSSMSから対象のデータベースの上で右クリックして、「タスク>>バックアップ」と進みます。
バックアップ先は、
C:\Program Files\Microsoft SQL Server\MSSQL14.SQLEXPRESS\MSSQL\Backup\
っとなっていますが、サーバーのローカルフォルダーにバックアップされますので、注意してください。
複製(ファイルおよびグループの復元)にて作成
データベースの複製は、バックアップしたファイルを復元する形で作成します。
データベースの上で右クリックして、「Fileおよびファイルグループの復元」を選択します。
復元先データベースという部分に、複製した新しいデータベース名を入れます。
復元元デバイスにて、バックしたファイルを選択して、復元にチェックをいれてOKすればデータベースが複製されます。
複製されたデータベースには、テーブルからストアドなど全てが複製されています。
セキュリティ>>ユーザーを確認すると、接続ユーザーも同じ物がコピーされています。
今回は、
参考
あえて別の接続ユーザーで分けたいので新たにuser2というのを作成して、user1は、複製したDB2には接続できないようにしたいと思います。
セキュリティ>>ユーザーからuser1のユーザーマッピングにて、DB2のチェックを外して対象外にしました。
複製DB2のODBC接続設定
DB2には、user2だけ接続できるように制限したいので、MSSMSから、user2を設定します。
「セキュリティ>>ログイン」の上で右クリックして、新しいログインにてuser2を追加します。
新しいログインuser2は、DB2のユーザーマッピングがされてないので、プロパティから開いてマッピングをしてください。
マッピングされると、DB2の「セキュリティ>>ログイン」の中に、user2が出てきます。
※更新しないと出てこないので注意してください。
このユーザー情報が、Accessの動くPC上でODBC接続設定をします。
自分の場合は、
- ODBC名 ODBC2
- ID user2
- パスワード japan2020$$
- サーバー名 ●●●¥SQLEXPRESS(御自分の環境に合わせる)
Accessの準備
Accessの方は、フツーにコピーして、DB2にリネームすればOKです。
これで前準備は完了です。
これからが、AccessのコピーDB2をSqlServerのデータベースDB2に接続してちゃんと動くのかを実験します。
ただ、沢山のテーブルやパススルークエリなどがあると全てのODBC接続情報を更新するのは本当に大変です。
その辺をVBAで簡単に一括変換できるのか!?
また、VBAコードでストアドを動かす時に設定したODBC接続情報を簡単に修正できる方法を検証してみたいと思います。
https://pctips.jp/server/stored-detabase-3/