Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 从备份文件还原数据库,其中文件名与reg表达式匹配_Sql_Sql Server_Tsql_Backup - Fatal编程技术网

Sql 从备份文件还原数据库,其中文件名与reg表达式匹配

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实例,其中只有与字符串前缀匹配的文件,但数字/

我正在使用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实例,其中只有与字符串前缀匹配的文件,但数字/日期每周都会更改。

您可以使用
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