クライアント - サーバー デスクトップ アプリケーション (.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 ライブラリを使用している可能性があります)?