2013-04-24 29 views
6

を使用して特定のバックアップファイルを削除する方法については、私はを調べていますが、「日付より古いバックアップを削除する」という結果しか見つけられません。それは私が望むものではありません。私は古いバックアップを残したいが、そのIDで特定のバックアップを削除できるようにしたい。特定のバックアップファイルをSQLを通じて削除する

msdbテーブルのエントリと特定のバックアップの復元履歴を簡単に削除できますが、SQLクエリを通じてファイルを削除することもできます()フルパスをデータベースに格納されます)、ディスク内にスペースを無駄にしないようにします。

手順 "xp_delete_file"では、特定のファイルを削除できないようです。

古いファイルを削除する手順がある場合は、特定のファイルを削除する方法があるはずです。ここでのセキュリティについて心配しないでください。

+0

バックアップファイル名とパスはありますか? – Pandian

+0

です。これは、データベースからフェッチするのがかなり簡単です。私は単にそのパス上のいくつかの "DELETE"(または同等のもの)を呼び出すことができるようにしたいと思います。 – Nuno

答えて

4

これは私が必要としたものです。

xp_cmdshell 'del c:\backup\file.bak' 

それを通じて、コマンドをアクティブにするために必要なことがあります。

EXEC sp_configure 'show advanced options', 1 
GO 

EXEC sp_configure 'xp_cmdshell', 1 
GO 

RECONFIGURE 
GO 
+0

ヘッドアップとして:xp_delete_fileは指定したファイルに接続し、SQL Serverのバックアップファイルであることを確認し、指定されたタイムスタンプより古い場合にのみ削除します。 dos DELコマンドは 'ダム'オプションとしてうまくいきますが、xp_delete_fileは少しの追加の保護/ロジックを提供します。 –

3
--Define a backup device and physical name. 
USE AdventureWorks2012 ; 
GO 
EXEC sp_addumpdevice 'disk', 'mybackupdisk', 'c:\backup\backup1.bak' ; 
GO 
--Delete the backup device and the physical name. 
USE AdventureWorks2012 ; 
GO 
EXEC sp_dropdevice ' mybackupdisk ', 'delfile' ; 
GO 

http://technet.microsoft.com/en-us/library/ms188711.aspx

+0

この方法を使用していますが、サーバーからファイルを削除できません。 – rahularyansharma

+0

エラーが発生しますか?たぶん十分な権限が必要です。 diskadmin固定サーバーロールのメンバーシップが必要です。 http://technet.microsoft.com/en-us/library/ms188903.aspx – Alexey

16

古い可能性が誰かを助けるかもしれません。 xp_delete_fileは、特定のバックアップファイルを削除するために使用できます。以下のコードを試してみてください。

EXECUTE master.dbo.xp_delete_file 0,N'c:\backup\backup1.bak' 
1

バックアップ・ファイルを指す物理名で、バックアップ・デバイスを作成します。実行し、

その後
exec master..sp_addumpdevice @devtype = 'disk', 
@logicalname = '<logical_name>', 
@physicalname = '<path + physical filename>' 

exec master..sp_dropdevice '<logical_name>', delfile 

そして、あなたのファイルがなくなった!

物理ファイル名は 'msdb..backupmediafamily'テーブルにあります

関連する問題