【发布时间】:2013-07-02 15:12:38
【问题描述】:
我有一个客户端 - 服务器桌面应用程序 (.NET),客户端必须获取存储在默认备份文件夹 (C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Backup) 中的可用备份文件列表
我决定创建一个存储过程,它将返回包含所有需要文件的表:
CREATE PROCEDURE [dbo].[spGetBackUpFiles] AS
SET NOCOUNT ON
BEGIN
declare @backUpPath as table
(
name nvarchar(max),
backuppath nvarchar(max)
)
insert into @backUpPath
EXECUTE [master].dbo.xp_instance_regread N'HKEY_LOCAL_MACHINE', N'SOFTWARE\Microsoft\MSSQLServer\MSSQLServer', N'BackupDirectory'
declare @table as table
(
filename nvarchar(max),
depth int,
filefile int
)
declare @backUpFilesPath as nvarchar(max) = (select top 1 backuppath from @backUpPath)
insert into @table
EXEC xp_dirtree @backUpFilesPath, 1, 1
SELECT * FROM @table WHERE filename like N'MASK[_]%'
END
但我收到以下错误:
消息 0,级别 11,状态 0,行 0
当前命令发生严重错误。结果(如果有)应丢弃。
你可以在你的机器上试试这个脚本...
可能是什么问题?
是否有另一种方法来获取可用备份列表(可能使用 SMO 库)?
【问题讨论】:
-
那么,您想要一个未被 sql server 跟踪的备份文件列表吗?如果您想要 sql server 知道的备份文件列表(例如从您的维护计划中或其他),那么您只需查询
msdb数据库中的backupfile表 -
请注意,
xp_dirtree未记录且不受支持。 -
Darren Kopp => 是的,我知道这些表(backupfile、backupmediafamily、backupset),但这些表没有与文件夹同步,只是历史记录
-
Aaron Bertrand => 有什么选择吗?
标签: sql-server tsql backup sql-server-2012 smo