如何在T-SQL的CONCAT函数中使用通配符匹配备份文件名
数据库恢复脚本通配符使用问题
我有以下备份文件:
WH_BEE_FULL_20241014_170853_1.bak WH_BEE_FULL_20241014_170853_2.bak WH_BEE_FULL_20241014_170853_3.bak WH_BEE_FULL_20241014_170853_4.bak WH_BEE_FULL_20241014_170853_5.bak WH_BEE_FULL_20241014_170853_6.bak
我想在T-SQL恢复脚本的文件路径指定部分,结合CONCAT函数使用通配符(类似*),用通配符替代文件名中的170853部分,忽略该位置的任意字符模式。以下是我编写的完整数据库恢复T-SQL脚本,重点关注CONCAT函数所在区域:
DECLARE @sql nvarchar(max); DECLARE @maxInputFiles BIGINT = 6; WITH L1 AS ( SELECT * FROM (VALUES (1),(1),(1),(1),(1),(1),(1),(1),(1),(1),(1),(1),(1),(1),(1),(1)) n(n) ), L2 AS ( SELECT 1 n FROM L1 AS a, L1 AS b ) SELECT @sql = N' RESTORE DATABASE [WH_BEE] FROM ' + STRING_AGG( CONCAT(' DISK = N''F:\Test\WH_BEE_FULL', '_', convert(varchar(8),cast(GETDATE()-3 as date),112), '_', '%', '_', g.value, '.bak''' ), ', ' ) + N' WITH REPLACE, FILE = 1, MOVE N''WH_Data1'' TO N''F:\data2022\WH_BEE.MDF'', MOVE N''WH_Data2'' TO N''F:\data2022\WH_BEE_1.NDF'', MOVE N''WH_Log'' TO N''G:\log2022\WH_BEE.LDF'', STATS = 5; ' FROM ( SELECT TOP(@maxInputFiles) ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) AS value FROM L2 ) AS g; EXEC master.sys.sp_executesql @sql;
内容的提问来源于stack exchange,提问作者Java
相关产品推荐
相关产品推荐

