テーブル内のデータが最後に変更された時刻(データの挿入、作成、削除)を知る必要があります。一般的な答えは、sys.dm_db_index_usage_statsからデータを抽出することですが、そのテーブルにアクセスすることはできません。理解できるように、そのアクセスはサーバーレベルのアクセス許可です。これは企業の共有サーバー上にあるためです。私のアクセスを許可しているIT部門のオッズは、豚が飛んでいるところです。SQL Server - テーブルの最終更新時刻を取得
この情報を取得する方法はありますか?大幅に昇格された特権は必要ありませんか?
更新#1
いくつかの追加情報:私がやっている何を、局部的にこのテーブルの内容をキャッシュし、私のローカルキャッシュを更新する際に知っておく必要があります。これが意味:
- を私は、この値が変更された場合
- 「キャッシュを更新し、物事が変更されている」実際のタイムスタンプ、私は私に語っローカルにキャッシュされた値と比較することができますだけで任意の値を必要としませんあまりにも頻繁に(例えば、彼らは非常にまれにしかありません、サーバーを再起動するたびにリセット取得)、それはOKですが、それはちょうど私が私が実際に
更新#を行う必要はありませんでした余分なキャッシュの更新を行うこと2
私はこれを早い段階でやっていたはずですが、必要に応じてテーブルを作成できると仮定しましたが、そうではありません。許可は与えられていません。だから、提案されている方法のいずれも
:-(動作します。ここに私の新しい考えがあります:私は
select checksum_agg(binary_checksum(*))
を呼び出し、全体のリモートテーブル上のチェックサムを取得することができ、チェックサムが変化した場合次に、私が知っています。テーブルが変更され、ローカルキャッシュを更新することができます。problems with checksumを見たことがありますが、はるかに複雑でずっと遅くなるようなHASHBYTESサウンドを使用します。
これは問題なく、私はキャッシュ全体をリロードする必要があります。私のテーブルには非常に多くの行があり、1行につきチェックサムを返すのは受け入れられないほど長い時間がかかりますe、 "OVER"節を使用して10個のチェックサム、行の最初の1/10の最初のチェックサムなどを取得する方法はありますか?
あなたのテーブルに 'LastModified'カラムのようなものがないと仮定していますか? – Siyual
修正!そして、それはサードパーティ製の製品によって作成され管理されるテーブルなので、スキーマを変更してそのような列を追加することはできますが、そのような列を維持するためにコードを変更する方法はありません。 –
もしあなたがスキーマを変更してうれしいなら、これらの操作を記録するトリガを追加することができます。 –