Sql 从备份文件还原数据库,其中文件名与reg表达式匹配
我正在使用SQL Server/T-SQL执行以下操作:Sql 从备份文件还原数据库,其中文件名与reg表达式匹配,sql,sql-server,tsql,backup,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\u LIVE.****.bak',但它的数字字符串每天都会改变 我们的目标是每周使用最新的备份从live恢复我的UAT实例,其中只有与字符串前缀匹配的文件,但数字/
RESTORE DATABASE UAT
FROM DISK = 'E:\Databases\backup\MY_LIVE_20120720_070001.bak'
WITH REPLACE
但我希望能够使用忽略备份文件中文件名(表示日期)中的数字的文件位置。只有一个'MY\u LIVE.****.bak'
,但它的数字字符串每天都会改变
我们的目标是每周使用最新的备份从live恢复我的UAT实例,其中只有与字符串前缀匹配的文件,但数字/日期每周都会更改。您可以使用
xp\u cmdshell
对文件进行dir。但是,请注意,xp\u cmdshell
通常出于良好的原因被禁用。鉴于这是UAT,这可能不是问题
请参见此处了解更多信息您可以使用
xp\u cmdshell
为您的文件执行目录。但是,请注意,xp\u cmdshell
通常出于良好的原因被禁用。鉴于这是UAT,这可能不是问题
更多信息请参见此处以及我如何使用它来忽略我的文件名中不断变化的数字您需要发出命令
dir e:\databases\backup\*.bak
并将结果放入您的restore database
命令中。我如何使用它来忽略您发出的文件名中不断变化的数字使用命令dir e:\databases\backup\*.bak
并将结果放入restore database
命令中。我认为已经有了解决方案:我认为已经有了解决方案:
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