データの更新判断

このQ&Aのポイント
  • データベースの件数の変化をポーリングで検出し、新規追加の判断にはデータ登録日をソートして処理しています。
  • データの追加と更新の判断は可能ですが、削除されたデータの判断は必要ありません。
  • データ件数によってレスポンス的に問題がある場合は判断が難しくなります。
回答を見る
  • ベストアンサー

データの更新判断

この方面に詳しくないので用語などに間違いがあるかもしれません SQL Server2008 RC2 を使っています データベースに複数のデータ列が存在してデータ件数(レコード数)は不定です プログラムは VC2010にて自作  ODBC経由でアクセス データベースの構造はある程度自分で加工可能 データベースへの件数の削除・追加・更新は自作プrグラム以外からも行われる 自作プログラム以外には以外には極力影響与えたくない 上記データベースの件数の変化については現状 SELECT COUNT (*) FROM [データベース名]  のポーリングで件数の増減の検出 新規追加の判断に関してはデータ列の中に データ登録日を保存することで それをソートして処理していますが 何処かのデータの一部が更新されたというのを検出することは可能なのでしょうか?   ※ 判断したいのはデータの追加と更新だけで削除されたデータが     どういったものであったかを判断する必要はありません 更新データも全データを都度ポーリングチェックすれば判断はできるでしょうが データ件数によってレスポンス的に使えない代物になると考えています データベースの設定やプログラム的なもので対処できるものなのか 無理なのか(個人的に無理だと考えてる) 可能であればどういった方法で実現できるのか わかる方がいたら教えていただけないでしょうか (無理なら無理で構わない  ->  詳しい方の判断を求めたい) 内容に不足があれば補足させていただきます

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

  • ベストアンサー
  • hoge1229
  • ベストアンサー率29% (58/194)
回答No.1

更新されたら別テーブルにそれを記録するトリガーを用意するとかですかね。(まあ、そのテーブル自体も操作されたら終わりですけど)

koi1234
質問者

お礼

トリガに関しては聞いたことはあるけど使ったことがありませんでした ちょっと方法調べて確かめてみましたが 確かにそれでうまくできそうな感じがあります 確認にも四苦八苦レベルの状態ですが何とか考えてみたいと思います (現在も継続テスト中) 回答ありがとうございました

その他の回答 (1)

  • chie65535
  • ベストアンサー率43% (8516/19358)
回答No.2

SQL Serverはトランザクションログを持っているので、最新ログをキャプチャすれば、どのテーブルにどのような変更が加えられたか判るようになっている。 https://msdn.microsoft.com/ja-jp/library/ms190925(v=sql.120).aspx

koi1234
質問者

お礼

ちょっとネットで情報検索してみました 確かにログはとられるようですがそのログの解析が 必要以上に難儀そうなので断念しました 回答ありがとうございました

関連するQ&A

  • SQLServer2005でデータ領域を更新したい

    SQLserever2005を使用しております。 あるデータベースをHDに入れて計算してたところ 「データベース '---' のトランザクション ログがいっぱいです。」 とエラーが出てしまい、HDの容量を見てみたら9MBほどしか空いてませんでした。 容量が空いてないのが原因かなと思いデータベースのテーブルを いくつか削除したのですが、HDの空き容量は変わっておりません。 恐らく過去にテーブルを作成した際、データ領域が追加されてしまい、 削除してもそのデータ領域が変わっていないのではないかと思うのですがこのデータ領域を更新することは出来ないでしょうか? [要するに削除した分のデータ領域をHDの空き容量に反映できないのでしょうかという意味です] ご教授宜しくお願いします。

  • アクセス[ファイルを開かずに、毎日一定時刻にデータ更新をしたい]

    アクセスは初心者レベルです。 ODBCデータベースから、テーブルにリンクさせている情報があります。 それを、毎朝決められた時刻にデータをとってきて、それを追加クエリとして別のテーブルへデータを追加していく。 ということは可能でしょうか?

  • ODBCデータソースが削除できません。

    ODBCデータソースが削除できません。 以下の環境でデータベースを作成しました。 OS:Windows vista Home Premium sp2 DB:MySQL 5.1 ODBC接続を行いたかったので、 コネクタ「mysql-connector-odbc-5.1.7-win32」のインストールもしました。 コントロールパネル→管理ツール→データソース(ODBC)から ユーザDSNにデータソースを追加しました。 設定を確認しようと、構成ボタンを押しましたが以下のエラーが表示されてしまいました。 タイトル:ドライバのConfigDSN、ConfigDriver、またはConfigTranslatorが失敗しました。 検出されたエラー: Invalid attribute string このエラーはどのように回復できるのでしょうか?

    • ベストアンサー
    • MySQL
  • DBアクセス簡易ツールを教えてください。

    ACCESSのようなODBCでデータベースに接続し、検索・追加・更新・削除ができるようなフリーウェアで良いものがあれば教えてください。

  • ASPでAccessのデータを更新するプログラム(初心者です)

    ASPの知識がないので質問が分り難いと思いますが、宜しくお願いします。 ASPの本についていたサンプルデータを使って、Webページを作成していますが、プログラムの知識がないので、サンプルデータをコピー&ペーストして四苦八苦しながら作成している次第です。データベースのデータを表示させたり新しいデータを追加するところまではできましたが、データを更新するサンプルがないので登録データを更新することができません。更新用のフォームに現在登録されているデータを表示させるところまではできました。ここで変更をしたデータをupdate.aspにデータを送信してデータベースのデータを更新させたいのですが、このupdate.aspに記載するプログラムがよくわかりません。初心者の私でも解るように、どなたか教えていただけませんでしょうか。質問の仕方が変かも知れませんが、宜しくお願いいたします。

  • Excelの外部データの取り込みについて

    Office for Mac 2004を使っています。 Excelで メニューの[データ] ↓ [外部データの取り込み] ↓ [新しいデータベースクエリ] と選択すると「ODBCドライバマネージャがインストールされていません」とインストールを勧められます。 が、ODBCドライバマネージャとMicrosoft Queryは2004の英語版にしか付いていないことがわかりました。 (Microsoft Query v.Xはネットに転がっていたのですが、当然ですが2004環境にはインストールできませんでした。) やりたいことは別のサーバにあるMysqlとつないでデータの取り出し、追加、更新、削除です。 追加、更新、削除があるためcsvでいったん吐き出して読むということでは要件が満たせません。 英語版(2004)を購入すれば使用可能なのでしょうか? (テーブル名、列名は英数で中のデータは日本語が入っています。) また、他の方法はないのでしょうか? Office for Mac英語版で実際に使用したことがある方いらっしゃいませんか?

    • 締切済み
    • Mac
  • マスタデータ更新

    こんにちは。 システム開発の基礎的なところがわからないので、教えていただきたく、投稿させていただきます。 システム開発をほとんどやったことがないので、言葉が変なところもあるかと思いますが、宜しくお願いいたします。 サーバー上に、AというSQLServerのDBがあります。 今までは、システム管理者のみがAccessからA.DBのリンクテーブルを使い、マスタデータの更新/追加/削除を行っていましたが、今後、リーダークラスの人もできるようにしたい!という要望があり、そのインターフェース部分を作成しています。 いろいろと考え、フロントエンド側にAccessでB.mdbを作成し、そこには、A.DBと同じテーブル構造の一時TBLを作成し、B.mdbを開いた時にA.DBから全データを取得することにしました。(取得するところまではできています) ここから、設定するための画面作成をしますが、最終的に、更新/追加/削除されたデータは、どのようにA.DBにUPすればいいのでしょうか? 考えた方法として (1)B.mdb内に、一時テーブルとは別に、更に同じ構造の変更用テーブルを作成。 設定画面から更新/追加/削除されたデータは変更用テーブルに保存し、全ての処理が終了したら、変更用テーブルにあるデータを1つづつ見て、A.DBへ更新/追加/削除をかける (2)一時テーブルのデータを直接更新/追加/削除し、全ての処理が終了したら、全テーブルのレコードを1件づつ比較し、A.DBへ更新/追加/削除をかける というくらいしか思いつかないのです。 その他に思ったのが、一時テーブルもしくは変更用のテーブルに、レコード毎に「更新/追加/削除」がわかるようにフラグを設けて、そのフラグに従ったSQL文を発行する というくらいです。。。 根本的に、マスタデータに対する更新/追加/削除のやり方が間違っていたりしますか? 誰も聞ける人がいないので、どうぞ宜しくお願いいたします!!!

  • excel>外部データで更新できない

    古い仕様ですが、Oracle8iとexcel2002でデータベースの集計をしています。 SQLが少々複雑なのでoracleにViewを作って、excelから外部取り込み(ODBC)を行っています。 1回目の取り込みはうまくいくのですが、データが更新したときに、excelで「更新」処理をしたところ内容は変更されませんでした。ところが、SQLplusを使ってViewを見ると値に変化があります。 Viewを作り直すとexcelのデータは更新します。 何とかexcelの「更新」だけで新しい情報が反映できないものでしょうか? ご存知の方、よろしくお願いいたします。

  • 新しいウィルスのアンチウィルスソフトのウィルス判断。

    新しいウィルスのアンチウィルスソフトのウィルスの判断手段、方法、発見ポイントってどこにあるのでしょうか? 既存に被害があった物に関しては、アンチウィルスソフトのデーターベース更新の時に、追加されて、それをポイントに発見しているのだと思います。 ダウンロード時や実行する時とかに。 同じような仕組みでも、プログラマによっては、そのプログラムの書き方が違ってくると思います。 どこまで、どこをポイントに検索しているのでしょうか? たまに、「アンチウィルスソフトで、誤検出されています。」ってフリーソフトも見かけます。 バイナリーまで見てるのかな? デコンパイルしないと無理だから、そう言うのは無理なのかな? それとも決まったWin32 APIに当たりをつけるのかな? 例えば、私が、全く新しく、jpg画像を探して、消去するウィルスを作った場合は、検出されるのでしょうか?

  • SQLの更新方法について

    SQLの更新方法について 環境 OS:windows XP home sql server express2008 Microsoft SQL Server Management Studio 10.0.1600.22 現象 MS ACCESSからODBCを通してsql server express2008の中に作ったテーブル”TB01”にアクセスしていました。 あるときSQL Server Management StudioでTB01を削除しました。 ところがACCESSからODBCを通して接続すると削除したはずのテーブル”TB01”が見えていて リンクを張るとデータも出てきます、 ためしに新しくデータベースを作ってテーブルを作成してもODBCからは昔のままのテーブルしかありません。 SQL SERVERを再起動しても変わりません、どのようにすればSQLの内容を更新できるのでしょうか? どなたかお知恵を拝借願います。