2017-06-09 6 views
0

データベースごとにユーザーIDとパスワードは異なるが、ユーザーごとに認証するためにSQL Server 2014に1つのSQL Serverログインを使用してデータベースを接続します。ユーザーの監査試行(データベーステーブルで作成された)

各ユーザーは、右の挿入、更新、私はWindowsフォーム(デスクトップアプリケーション)とWebフォーム(Webアプリケーション) に開発された監査試用 私のアプリケーションとして別のテーブル内のユーザーIDでこれらのトランザクションを保存するレコード を削除する必要が両方とも私はチェンジ・データ・キャプチャ(CDC)機能を見つけましたが、私は、ユーザーIDとCDCはない知られているユーザーID

+0

あなたのアプリはどのようにデータベースに接続されていますか?すべてのクエリをテキストで実行しますか? – Whencesoever

+0

いいえ、ストアドプロシージャ(SQL)またはCommandBuilder(C#)を使用 –

答えて

-1

使用してトランザクションを保存したいので、それを私の要件を満たしていない

も同じ同じデータベース・ユーザーIDに接続し、この挿入しますテーブルに記録する。最終的に、2番目のクエリをSPにスクリプト化し、SQLエージェントから毎日実行することができます。希望があれば助けてください Ven

Create table eventsLog 

    ( 

    EventClass varchar(10) 
    ,LoginName Varchar(100) 
    ,SPid int 
    ,Starttime date 
    ,ObjectName Varchar(255) 
    ,DBName varchar(100) 
    ,Hostname varchar (100) 

    ) 


    Insert into eventsLog 

    SELECT e.NAME AS eventclass 
     ,t.loginname 
     ,t.spid 
     ,t.starttime 
     ,t.objectname 
     ,t.databasename 
     FROM sys.fn_trace_gettable(CONVERT(VARCHAR(150), (
        SELECT TOP 1 f.[value] 
        FROM sys.fn_trace_getinfo(NULL) f 
        WHERE f.property = 2 
        )), DEFAULT) T 
    INNER JOIN sys.trace_events e 
     ON t.eventclass = e.trace_event_id 
    WHERE eventclass = 164 
+0

デフォルトトレースはDMLを記録しません。あなたの例が示すのは、 "挿入、更新、削除"ではなく、 "Object:Altered"クラスのDDLイベントです。さらに、トレースログはログインのみでOPのアプリケーションは毎回同じログインの下で接続します – sepupic

関連する問題