从备份文件恢复数据库,其中文件名与reg表达式匹配

时间:2012-08-08 11:05:51

标签: sql sql-server tsql backup

我正在使用SQL Server / T-SQL执行以下操作:

RESTORE DATABASE UAT
FROM DISK = 'E:\Databases\backup\MY_LIVE_20120720_070001.bak'
WITH REPLACE

但我希望能够使用一个文件位置来忽略备份文件中文件名中的数字(代表日期)。只有一个'MY_LIVE_****.bak'但它的数字字符串每天都会改变。

目标是每周使用最新备份从现场恢复我的UAT实例 - 其中只有文件匹配该字符串前缀,但数字/日期将每周更改。

2 个答案:

答案 0 :(得分:1)

您可以使用xp_cmdshell为您的文件创建目录。但请注意,xp_cmdshell通常是有充分理由禁用的。鉴于这是UAT,这可能不是问题。

请点击此处查看更多http://www.sqlusa.com/bestpractices2005/dir/

答案 1 :(得分:0)

ALTER DATABASE UAT
SET SINGLE_USER WITH
 ROLLBACK IMMEDIATE

declare @fileName varchar(56);

SELECT @filename = physical_device_name
FROM msdb.dbo.backupmediafamily
WHERE media_set_id =(
    SELECT TOP 1 media_set_id 
    FROM msdb.dbo.backupset 
    WHERE database_name='MY_LIVE' 
    ORDER BY backup_start_date DESC)

ALTER DATABASE UAT
SET SINGLE_USER WITH
 ROLLBACK IMMEDIATE

----Restore Database
RESTORE DATABASE UAT
FROM DISK = @fileName
WITH REPLACE

/*If there is no error in statement before database will be in multiuser
 mode.
 If error occurs please execute following command it will convert
 database in multi user.*/
ALTER DATABASE ASLA_DEV SET MULTI_USER
 GO