2009-06-02 2 views
2

その情報を見つける方法はありますか?たぶんSQL Serverの内部ログのいくつかの種類ですか? 過去のデータに基づいてレポートを生成する必要がありますが、これまでの要件ではないため、アプリでその機能を実装していません。今私は立ち往生している。Sql Server 2005で1つの行が挿入または更新されたときにdatetimeを取得する方法はありますか。

ありがとうございます。

+0

SO –

答えて

0

あなたはいくつかのログからデータを取得することができて幸運になるかもしれませんが、将来のために準備する必要があります。スペックが何を言っても、追加情報とロギングを追加することは良い考えです。

本当に重要なテーブルでは、LastChgIDとLastChgDateを含むすべてのバージョンの行を含む履歴テーブルがあります。あなたがシステムを設計するとき、私はCreateID、CREATEDATE、LastChgIDを持っている重要なテーブルで

、LastChgDate

(コードテーブル以外の)他のすべてのテーブルに

私はLastChgIDを持って、LastChgDate

、あなたが持っているでしょう重要なことの考え。

これは多くが画面に表示されますが、そうでない場合でも、何人かの怒っている人が電話をかけますか? 「2009-06-02 10:06:22.213でした!」と言うことができます。

0

申し訳ありません。それがWebアプリケーションの場合、そのログに基づいてレポートを生成することができます。

1

テーブルに列を追加して(NULL可能にする)、すべての行にgetdate()を渡す必要があります。これはもちろん正確ではありませんが、あなたの唯一の選択肢です。すべての行にデータが設定されたら、列にNOT NULL制約を追加します。

+1

の最も丁寧な男で、この列のデフォルト値をGETDATE()に設定します。 –

+0

唯一の解決策であるかどうかはわかりませんが、かなり良いです。 –

+0

しかし、この列を追加する前に既に挿入した行についての情報を取得したいので、彼のケースでは、機能しません。 –

0

トランザクションログが保存され、ログ配布が行われる可能性はわずかです。あなたのDBAに確認してください。

これらのログには、探している日付/時刻のスタンプが表示されます。

0

SQL Serverには、すべてのデータ変更の自動監査と完全監査はありません。

オリジナルの要件であろうとなかろうと、何が起きたかを追跡するのが常識です。

これを追加して、新しい機能の前にそのデータを受け入れて追跡する必要はありません。

関連する問題