• ベストアンサー

VB.netでSQLServerの差分バックアップ

掲題の通りでVB.netでSQLServerのテーブルのバックアップを行いたく存じます。 仕様としては下記の二つの通りなのですが、 1.システムが起動したときにフルバックアップ 2.あるテーブルが更新された際に差分バックアップ フルバックアップのやり方はネット上に参考にさせていただけるところがあるのですが、差分バックアップのやり方がなく困っております。 皆様のお知恵を拝借いたしたく存じます。 よろしくお願いいたします。 【環境】 VisualStudio2019 SQLServer2019

質問者が選んだベストアンサー

  • ベストアンサー
  • dell_OK
  • ベストアンサー率13% (766/5721)
回答No.2

フルバックアップはどのようにされていますか。 例えば、以下のようなSQLを実行しているのでしたら、 BACKUP DATABASE データベース名 TO DISK = '出力ファイルパス' WITH ~; 差分の場合は、「, DIFFERENTIAL」の追加でできそうです。 BACKUP DATABASE データベース名 TO DISK = '出力ファイルパス' WITH ~, DIFFERENTIAL; これを、そのあるテーブルのINSERTやUPDATEなどの前に実行するのではどうでしょうか。 https://docs.microsoft.com/ja-jp/sql/t-sql/statements/backup-transact-sql?view=sql-server-ver15

redpond
質問者

お礼

返信遅くなり大変申し訳ございません。 丁寧なご回答ありがとうございます。 おかげさまで解決することができました。 ありがとうございます。

その他の回答 (1)

  • bardfish
  • ベストアンサー率28% (5029/17766)
回答No.1

多分vb.netだけでは出来ないと思います。 差分となると、追加(INSERT)/削除(DELETE)/変更(UPDATE)の履歴となりますよね? 追加/削除レコードはどのように判断するのでしょうか? フルバックアップのデータから検索して?では修正の場合は?キーが変更されていた場合は追加と削除をどのように判断するのですか? と言う具合に意外と面倒です。 ですからSQL Server側で対処テーブルにトリガーを作成します。 「CREATE TRIGER」で検索してください。 INSERT/DELETE/UPDATEごとに設定することが出来、トリガーで使用するテーブルのCOLUMNを元テーブルと同じにし、更新区分を表すCOLUMNを追加してやればINSERT/UPDATE/DELETEの履歴をSQLServerに記録できるので佐連を対象にバックアップすればとりあえず目的は達成できるでしょう。 問題は・・・バックアップしたデータ(ファイル)をどうするのか?ですね。 単純にCSV形式でバックアップをとりたいならA5M2というデータベースコンソール?を使用した方が簡単です。 https://a5m2.mmatsubara.com/ 私はこれを愛用しています。 純正のSQLクライアントマネージャ?よりわかりやすくて便利です。接続する為の接続設定もバックアップできますからね。

redpond
質問者

お礼

返信遅くなり大変申し訳ございません。 丁寧な解説ありがとうございます。 おかげさまで解決することが出来ました。

関連するQ&A