我需要知道表中的數據何時最後修改(數據插入,創建,刪除)。常見的答案是從sys.dm_db_index_usage_stats中提取數據,但我沒有訪問該表的權限,據我所知,訪問權限是服務器級權限,因爲這是在企業共享服務器上,所以IT部門授予我訪問權限的機率與豬羣在一起。SQL Server - 獲取表的最後更新時間
有沒有辦法獲得這些信息,那不需要大大提升權限?
更新#1
一些額外的信息:我在做什麼,是緩存該表的內容在本地,並且需要知道何時更新我的本地緩存。這意味着:
- 我並不需要一個實際的時間戳,只是任何價值,我可以比較一個本地緩存值,它告訴我:「事情已經改變,更新緩存」
- 如果該值發生變化過於頻繁(如得到重置每次重新啓動,這是非常罕見的服務器時間),它是確定的,它只是意味着我這樣做,我其實沒有需要做
更新#額外的緩存更新2
我應該儘早做到這一點,但我只是假設我可以根據需要創建表格......但我不是。未授予權限。所以,無論是提出的方法將工作:-(
這是我的新想法:我可以打電話
select checksum_agg(binary_checksum(*))
,並獲得對整個遠程表的校驗之後,如果校驗和的變化,我知道了。我已經看到了problems with checksum,但是使用HASHBYTES聽起來好像會更加複雜和慢得多。
這是行得通的,問題是當校驗和改變時,我必須重新加載整個緩存。我的表有很多行,返回每行的校驗和需要一個無法接受的長時間e,有沒有辦法使用「OVER」子句並獲得10個校驗和,第一個十分之一的第一個校驗和等等?
我假設你的表沒有任何像'LastModified'列? – Siyual
正確!而且,這是一個由第三方產品創建和維護的表格,所以雖然我可以修改他們的模式以添加這樣的列,但我沒有辦法修改他們的代碼來維護這樣的列。 –
那麼如果你很高興修改模式,你可以添加一個觸發器來記錄這些操作。 –