У меня есть клиент - настольный сервер приложений (.NET) и клиент должен получить список доступных резервных копий файлов, хранящихся в неплатеже резервное копирование папки (C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Backup
)SQL Server 2012: получить список доступных резервных копий
я решил создать хранимую процедуру, которая будет возвращать таблицу со всеми необходимыми файлами:
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
Но я получаю следующее сообщение об ошибке:
Msg 0, Level 11, State 0, Line 0
A severe error occurred on the current command. The results, if any, should be discarded.
Вы можете Tr y этот скрипт на вашей машине ...
В чем проблема?
Есть ли другой способ получить список доступных резервных копий (может быть, используется библиотека SMO)?
Итак, вы хотели список резервных файлов, которые не отслеживаются сервером sql? Если вы хотите, чтобы список файлов резервных копий, о которых знает сервер sql (например, из вашего плана обслуживания или чего нет), вы можете просто запросить таблицу 'backupfile' в базе данных' msdb' –
Обратите внимание, что 'xp_dirtree' недокументирован и неподдерживается , –
Darren Kopp => Да, я знаю об этих таблицах (backupfile, backupmediafamily, backupset), но эти таблицы не синхронизированы с папками, это просто история –