[SQL SERVER][SSRS]救回誤刪的RDL報表
如果不小心誤刪專案中的RDL報表,在沒有相關備份檔案或 Source Control..等機制下,
是否有辦法挽救呢?答案是可以的(視情況而定),大致上來說三種方法。
1.使用檔案救援軟體。
如 Recuva...等相關軟體,一般來說只要檔案刪除後,
硬碟沒有執行任何異動(新增檔案、刪除檔案、搬移或複製檔案),
使用這類軟體將高達90%以上機率找回誤刪的檔案。
2.透過ReportServer DB。
你可以使用以下TSQL來查詢是否含有誤刪的報表名稱,
前提是這些報表你有部署到ReportServer DB,
下面我簡單示範一下。
新增 Report3.rdl
執行畫面
結果沒錯後就部署到ReportServer。
不小心在專案中刪除Report3.rdl
執行TSQL查詢
select name,[path],cast(cast(content AS varbinary(max)) as xml) as RDLDef
from dbo.[Catalog]
where type = 2
可以看到含有Report3的定義資料。
點選RDLDef欄位中的XML資料,複製到剪貼簿中並修改檔名為Report3.rdl
專案中加入剛剛的報表檔案即可
3.透過報表管理員下載。
如果相關報表之前有佈署成功的話,那你可以透過報表管理員下載相關報表檔案。
切換到報表屬性
點選編輯。
這時就會跳出下載視窗
最後還是要強調一下備份的重要性,
如果你有使用Reporting Servives的話,相關資料檔案(.rdl、.rptproj、.sln...等)、
資料庫(reportserver)、組態檔案和加密金鑰也請記得備份檢驗喔。
參考