次の方法で共有

Access テーブルのバックアップについて

Anonymous
2014-11-26T07:54:08+00:00

お世話になります。

現状、毎月1日にAccessにてSQLサーバー上のいくつかのテーブルをローカルにコピー(テーブル作成クエリ)

してます。なお、タスクスケジューラにて深夜に実行してます。

※SQLサーバーのデータは、別途、日々バックアップしてます。

例えば、SQL上のテーブルのフィールドが追加された場合、テーブル作成クエリもあわせてフィールドを

追加しなければなりませんが、忘れてしまいます。。

そもそもフィールドを追加すること自体、頻度が少ないので余計にクエリを修正するのを忘れてしまいます。

テーブル作成クエリではなく、別の方法でSQLサーバー上のテーブルをAccessのローカルにコピーする

ことは可能でしょうか。

事前にフィールド名を取得して、とりあえず空っぽのテーブルを作成し、そこにデータを入れる感じ

でしょうか。

ご教示の程、宜しくお願い致します。

Microsoft 365 と Office | アクセス | 家庭向け | Windows

ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。

0 件のコメント コメントはありません

6 件の回答

並べ替え方法: 最も役に立つ
  1. Anonymous
    2014-11-26T09:49:50+00:00

    > リンクテーブルの設定がされている元のmdbがあり、それを

    > コピーしてyyyymmdd.mdbというファイル名で毎月作成してます。

    では同一のmdbファイル内でのテーブル名の競合等は

    とりあえず無視してよいということですね。

    > 例えば、SQL上のテーブルのフィールドが追加された場合、

    > テーブル作成クエリもあわせてフィールドを追加しなければなりません

    これに関しては、テーブル作成クエリを実行しようとしている時点で

    既にリンクテーブルの再リンクが適切に行われているのであれば、

    フィールドを1つ1つ指定するのではなく * により全フィールドを

    SELECT するようになさればよいでしょう。

    (SQL ビュー)


    SELECT [リンクテーブル名].* INTO [新規テーブル名]

    FROM [リンクテーブル名];


    > テーブル作成クエリではなく、別の方法でSQLサーバー上のテーブルを

    > Accessのローカルにコピーすることは可能でしょうか。

    こちらについては既に言及した通り Access のインポート機能を

    使用する方法が挙げられます。

    VBAでは DoCmd オブジェクトの TransferDatabase メソッドが

    これに該当します。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  2. Anonymous
    2014-11-26T09:30:44+00:00

    失礼しました。

    こちらこそ説明不足ですみません。

    リンクテーブルの設定がされている元のmdbがあり、それを

    コピーしてyyyymmdd.mdbというファイル名で毎月作成してます。

    当該mdbの起動時にモジュールを実行するようにしており、そのモジュールに

    各テーブルのテーブル作成クエリ(SQL)を実行するようにしてます。

     1.タスクスケジューラにてBATを実行

      BATにて元.mdbをyyyymmdd.mdbというファイル名でコピーし、このmdbを起動

     2.起動後、テーブル作成クエリによりローカルにテーブル作成

     3.このmdbを所定のパスに移動

    という流れです。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  3. Anonymous
    2014-11-26T09:05:47+00:00

    言葉足らずで申し訳ありません。

    > バックアップの方法(世代管理や差分データの扱い方)等について

    > 何かルールがあるでしょうか。

    これについてはサーバー側のバックアップ設定ではなく、

    mdb/accdb ファイルへのテーブルのコピー

    (バックアップ)に際しての質問です。

    > なお、タスクスケジューラにて深夜に実行してます。

    例えばここで実行されているタスクの内容とか、

    月ごとにバックアップされる「いくつかのテーブル」を

    1ヶ月につき1ファイルというユニットで保持しているのか

    それとも1つの mdb/accdb ファイル上に

    毎月毎月テーブルが新規作成されるのか

    (あるいは同名のテーブルを上書きしているのか)とか、

    そういったことです。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  4. Anonymous
    2014-11-26T08:53:29+00:00

    sk.exeさま

    早速のご回答ありがとうございます。

    >SQL Server データベースを参照先とするリンクテーブルを元にした

    >テーブル作成クエリを実行している、ということでしょうか。

    仰る通りです。リンクテーブルを元にしたテーブル作成クエリです。

    >SQL Server データベースからのテーブルのインポートではなく

    >テーブル作成クエリによって実行されているのには

    >何か理由があるのでしょうか。

    特に理由はなく、SQLサーバー上にあるテーブルをAccessローカルにコピー

    するのにテーブル作成クエリしか思いつかなかったからです。。

    >また「日々バックアップ」されているということですが、

    SQLのメンテナンスプランでDB全体を30分毎にバックアップしており

    クリーンアップタスクにて3時間経過したものは破棄してます。

    ※要するにバックアップデータが常に6世代ある状態。

    で、Windowsバックアップにて毎日0:00に、この時点で存在している

    DBのバックアップデータ(6世代分)をバックアップしてます。

    Accessにて毎月テーブルをコピーしているのは、ちょっと確認したいときに

    使いたいからです。例えばAテーブルのxxフィールドは現在は「○○○」と

    なっているけど、11/1時点では何が登録されていたんだろう。。みたいな

    ときです。

    SQLのバックアップだけだと、ちょっと確認したいだけなのに、その日のデータを

    リストアしなければならないので(バックアップメディアが変わってたら該当する

    メディアを入れ替え)手間がかかってしまいます。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  5. Anonymous
    2014-11-26T08:22:05+00:00

    > 現状、毎月1日にAccessにてSQLサーバー上のいくつかのテーブルを

    > ローカルにコピー(テーブル作成クエリ)してます。

    SQL Server データベースを参照先とするリンクテーブルを元にした

    テーブル作成クエリを実行している、ということでしょうか。

    > ※SQLサーバーのデータは、別途、日々バックアップしてます。

    SQL Server データベースからのテーブルのインポートではなく

    テーブル作成クエリによって実行されているのには

    何か理由があるのでしょうか。

    また「日々バックアップ」されているということですが、

    バックアップの方法(世代管理や差分データの扱い方)等について

    何かルールがあるでしょうか。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません