2011-04-01 32 views
4

在SQL Server 2008配置爲full數據庫恢復模式,是這樣的查詢臨時只讀查詢存儲在SQL Server事務日誌中嗎?

選擇COL1,COL2,從表名

COL3記錄到事務日誌文件。

換句話說,我可以確定使用事務日誌備份在特定日期在數據庫上運行的查詢嗎?

+0

您是在嘗試性能調整,故障排除還是需要某種審計線索? – JeffO 2011-04-01 20:25:57

+0

它根本不用於性能調整。我可以爲此使用DMV。我只需要確定是否有人查詢數據庫上的特定表。我知道的一個長鏡頭;但我想我會問這個問題。 – Catch22 2011-04-02 08:57:48

回答

5

否。事務日誌根本不記錄查詢。它只是記錄了必要的信息,以向前滾動或回滾事務(和SELECT查詢不會產生任何記錄的活動的話)

您可以嘗試

select top 100 * 
from sys.fn_dblog(default,default) 

來看看的那種東西記錄。

如果您需要此類信息,您需要設置跟蹤/擴展事件會話/ audit sessio n來記錄它。在大多數環境中,這可能會令人望而卻步。

您可以使用以下方法獲得有關正在運行的adhoc查詢的一般概念。

SELECT text 
from sys.dm_exec_cached_plans 
cross apply sys.dm_exec_sql_text(plan_handle) 
where objtype='Adhoc' 
+0

實際上,如果工作表被計劃使用,'SELECT'查詢可以生成日誌(在'tempdb'中)。他們當然沒有備份,所以這與@op無關,但我認爲我只是爲了正確而提及它:) – Quassnoi 2011-04-01 17:32:00

+0

@Quassnoi - (並不是爭辯,這可能是這種情況,但.. )爲什麼需要記錄? 'tempdb'只需要'ACI'而不需''ACID'。它在每次重啓時都會重新創建。 – 2011-04-01 17:35:00

+0

@Martin:因爲事務日誌提高了性能(使用順序寫訪問)。當然,並不是所有的事情都被記錄下來:只有像頁面分配或緩存計劃中的持久工作表這樣的事情http://technet.microsoft.com/en-us/library/cc966545.aspx – Quassnoi 2011-04-01 17:39:20