0

DB でレコードが挿入または更新されるたびに追跡したり、通知を受け取るにはどうすればよいですか? このような DB の変更が発生するたびに、ほぼリアルタイムで外部アプリケーションに変更を通知したいと考えています。これを行うには、DBMS に依存せず、アプリケーション プログラミング言語に依存しない方法はありますか? そうでない場合、特に MS Access と MS SQL Server で可能ですか? もちろん、DBの継続的なポーリングを避けたいと思っています。

4

4 に答える 4

1

Microsoft SQL Server の最新バージョンでは、サーバーの状態とイベントに基づいて .NET コードでイベントを発生させることができると思います。私はそれを試したことがなく、これを行う「DBMSに依存しない」方法についても聞いたことがありません(Xミリ秒ごとにDBをポーリングしません)。

于 2008-11-26T14:43:40.283 に答える
1

SQL Server を使用すると、SQL Server 自体に DLL をロードし、そこから拡張ストアド プロシージャを使用してメソッドを呼び出すことができます。DLL は、通常は TCP ソケットを介して、他のアプリケーションに通知できます。

于 2008-11-26T14:45:24.680 に答える
0

SQL Server でこれを行うには、通知サービスを使用します。何らかの方法で処理できるデータ更新のために、DB からの通知をサブスクライブする dll を作成します。

ただし、MS は、これを SQL Server 2008 から削除すると述べています。

Oracle にも同様の機能がありますが (ただし、自社のテクノロジをそのままにしておく傾向があります)、データベースに依存しないものは見たことがありません。

于 2009-08-24T13:41:00.897 に答える
0

MS-Access では、レコードの変更やレコードの追加を、ユーザー名とレコードが作成または更新された日付を格納するメイン テーブルのフィールドで追跡しています。

Windows API を使用してユーザー名を記録する必要があります。通常は、配電盤フォームが開かれたときに実行されます。

特定の変更を追跡するために離れた場所を探しています。私のデータベースはプロジェクト管理に使用されています。誰がいつ変更したかだけでなく、具体的に何が変更されたかを追跡したいと思います。

これは元の質問の要件を満たしていると思います。ユーザーの名前を読み取る Windows API を後で追加できます。

Private Sub Form_BeforeInsert(Cancel As Integer) Me!UserCreated = UCase(CurrentUser()) Me!DateCreated = Now() End Sub

Private Sub Form_BeforeUpdate(Cancel As Integer) Me!DateModified = Now() Me!UserModified = UCase(CurrentUser()) End Sub

-- マイク

于 2009-01-06T18:59:25.227 に答える