問題:在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