2008,R2版本查詢DB備份維護計劃中的數據庫名

    問題:在MSSQL2000版本中可以用sysdbmaintplan_databases系統表查看數據庫備份維護計劃中涉及到的數據庫信息,比如維護計劃A分別做了master,db1,db3的數據庫備份,在MSSQL2008中取消該系統表查詢(但爲了向後兼容性讓保留該表)。

    如何知道當前實例的維護計劃共備份了哪些DB呢?

    之前回答過樓主,因爲SSIS包內容是image類型的二進制數據,查詢比較麻煩,不建議做。執着的力量真大,非要做-_-!

(感謝ap0405140的執着!)

 

    T-SQL:

 

DECLARE @idoc int

DECLARE @doc xml

-- 定義變量

select @doc = cast ( cast ( packagedata as varbinary ( max )) as xml ) from msdb .. sysssispackages p

where packagetype = '6' and folderid <> '00000000-0000-0000-0000-000000000000' -- 限制返回結果集爲維護計劃中的非父邏輯文件夾

 

-- 讀取 XML handle

EXEC sp_xml_preparedocument @idoc OUTPUT , @doc , '<DTS xmlns:SQLTask="www.microsoft.com/sqlserver/dts/tasks/sqltask"/>'

-- 查詢文本節點的數據庫內容

SELECT [text] DBNAME FROM OPENXML ( @idoc , './/SQLTask:SelectedDatabases' ) where nodetype = 3 

--.//SQLTask:SelectedDatabases 

--是指從當前節點下任意查找命名空間爲 SQLTask SelectedDatabases 子節點

 

-- 釋放 XML handle

EXEC sp_xml_removedocument @idoc

 

--result:

DBNAME

---------------------------

master

model

msdb

ReportServer

ReportServerTempDB

 

( 5 行受影響 )

 

 

CSDN帖地址:http://topic.csdn.net/u/20101203/11/d6a9d073-1a36-4e8b-a4fd-2decf7b72111.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章