< 返回新聞公共列表

如何在云數(shù)據(jù)庫 SQL Server中找出刪除的文件呢?

發(fā)布時(shí)間:2020-12-22 15:23:15

一、總結(jié)

1、當(dāng)沒有部署觸發(fā)器和開啟審計(jì)的情況,想知道某張表是被哪個(gè)用戶刪除的,可以使用系統(tǒng)函數(shù)fn_dblog結(jié)合系統(tǒng)的默認(rèn)跟蹤找到;

2、需要注意的是系統(tǒng)默認(rèn)提供5個(gè)跟蹤文件,默認(rèn)大小都是20MB,當(dāng)實(shí)例重啟的時(shí)候或者達(dá)到最大值的時(shí)候,會(huì)重新生成新的文件,將最早的跟蹤文件刪除,依次滾動(dòng)更新,所以刪除表后間隔的時(shí)間太長,也是找不到結(jié)果的;

3、fn_dblog函數(shù)簡(jiǎn)介

* 使用fn_dblog函數(shù)我們可以查看當(dāng)前數(shù)據(jù)庫的事物日志文件的記錄(活動(dòng)的日志,備份走的日志用該函數(shù)查不到);

* 官方并未公開此函數(shù)的用法,在生產(chǎn)環(huán)境,慎用此命令!?。?;

* 2個(gè)參數(shù):

參數(shù)1:日志開始序列號(hào)位置(LSN),輸入NULL,表示從日志開始位置返回結(jié)果;

參數(shù)2:日志結(jié)束序列號(hào)位置(LSN),輸入NULL,表示查找到日志最后的結(jié)束位置;

4、通過sys.fn_dblog最后定位到的結(jié)果,只能顯示object_id,找不到具體的表名,如果有多個(gè)用戶做了大量的drop操作時(shí),找出的結(jié)果也非常多,可能得不到想要的結(jié)果;

5、如果在刪除表時(shí),用戶指定了事物名稱,在使用sys.fndblog查找結(jié)果的時(shí)候,[Transaction Name]的值必須使用用戶指定的事物名稱才能出結(jié)果;


如何在云數(shù)據(jù)庫 SQL Server中找出刪除的文件呢?.jpg


6、如果在刪除表時(shí),用戶手動(dòng)開啟了事物,但是并沒有指定事物名稱,在使用sys.fndblog查找結(jié)果的時(shí)候,[Transaction Name]的值要使用user_transaction才能有結(jié)果。


云數(shù)據(jù)庫 SQL Server.jpg


二、操作步驟

1、準(zhǔn)備測(cè)試數(shù)據(jù)

2、查看student表的object_id(和一會(huì)找出來的對(duì)比一下是否一致)

3、創(chuàng)建一個(gè)具有test庫dba權(quán)限的用戶dbinfo

4、使用dbinfo用戶登錄數(shù)據(jù)庫刪除student表

5、使用系統(tǒng)函數(shù)sys.fn_dblog找出相關(guān)信息

6、根據(jù)事物ID,找出被刪除的對(duì)象

7、找出SQLServer中默認(rèn)的trace的path路徑

8、根據(jù)trace path,事務(wù)ID、object_id、開始時(shí)間、SPID等信息找到對(duì)應(yīng)的trace信息


以上就是如何在云數(shù)據(jù)庫 SQL Server中找出刪除的文件的相關(guān)內(nèi)容。小編講解的操作步驟會(huì)比較簡(jiǎn)單,如果你有想更加深入了解的話,請(qǐng)咨詢深圳市恒訊科技的相關(guān)技術(shù)人員。



/template/Home/Zkeys724/PC/Static