0

したがって、dbase のテーブルに 2 つのトリガーがあります。その目的は、ユーザーまたはサード パーティのインポート/エクスポートによって行われたデータ操作アクティビティをログに記録することです。それが実行されたときに明らかにマークする日付スタンプを持つためにそれを保存するテーブル。何らかの理由で、このサードパーティの SSIS パッケージがレコードを書き込むと、(予想どおり) トリガーがトリガーされますが、まったく同じ時間になります。レコードを挿入するための 1 つのレコードと、レコードを更新するための別のレコード。問題は、日付スタンプがミリ秒までまったく同じであることです。

この原因を追跡する方法についてのアイデアはありますか? SSIS パッケージを見る必要がありますか? それが2つのトリガーを引き起こすとは思わない。

御時間ありがとうございます!

4

2 に答える 2

1

SQL プロファイラーを使用して、何が呼び出されているかを確認してください。しかし、私の疑いはSSISです。

于 2012-10-24T13:08:53.367 に答える
0

SQL Server では、DATETIME データ型の分解能は 3 ミリ秒です。短いように聞こえますが、最新の CPU で数千の命令を実行するには十分な時間です。そのため、挿入の直後に更新が続く場合、同じ DATETIME 値になる可能性が高くなります。

DATETIME2 データ型と SYSDATETIME() 関数を使用してそれを評価することにより、分解能を 100 ナノ秒に増やすことができます。ただし、それでも値が重複する可能性があります。

実行順序を取得する最も簡単な方法は、IDENTITY 列をログ テーブルに追加することです。増え続ける値から、順序を直接識別することができます。

于 2012-10-24T13:40:54.373 に答える