多个 Bak 文件恢复以进行迁移

问题描述 投票:0回答:1

我们有这个旧服务器,我们需要迁移到新服务器。 我们有一个脚本可以将所有数据库备份到文件夹 C:\SQLBackup

我已经毫无问题地迁移了几台较新的服务器

DECLARE @datapath VARCHAR(512)
Set @Datapath = 'C:\Program Files\Microsoft SQL Server\MSSQL14\MSSQL\DATA\'

Select 'use master; ' + 'Restore Database ' + '[' + DBName + ']' + ' From Disk =' + ''''+ 'C:SQLBackup\' + DBName + '.bak' +'''' + ' WITH  FILE = 1, MOVE N'+ DBName +'_DATA' + ' TO '' @datapath'' + DBname + '_DATA.mdf', MOVE N'+ DBName +'_LOG' TO @datapath' + DBName + '_LOG.ldf',  NOUNLOAD,  STATS = 5' ';'
from
(SELECT
    db.name AS DBName
FROM sys.databases db
WHERE name NOT IN ('master','model','msdb','tempdb')) D

谢谢

这给了我一个错误

消息 156,第 15 级,状态 1,第 1 行
关键字“TO”附近的语法不正确。
消息 102,第 15 级,状态 1,第 6 行
“D”附近的语法不正确。

sql sql-server restore
1个回答
0
投票

请不要认为这是一个答案,这没有经过测试以确保它生成任何有效的内容。它只是为了显示您的连接语法有什么问题。

DECLARE @Datapath VARCHAR(512);
SET @Datapath = 'C:\Program Files\Microsoft SQL Server\MSSQL14\MSSQL\DATA\';
SELECT 'use master; ' + 'Restore Database ' + '[' + DBName + ']' + ' From Disk =' + ''''+ 'C:SQLBackup\' + DBName + '.bak' +'''' + ' WITH  FILE = 1, MOVE N'+ DBName +'_DATA' + ' TO ' + @Datapath + DBname + '_DATA.mdf, MOVE N'+ DBName +'_LOG TO ' + @datapath + DBName + '_LOG.ldf,  NOUNLOAD,  STATS = 5;'
FROM (
    SELECT
        db.name AS DBName
    FROM sys.databases db
    WHERE name NOT IN ('master','model','msdb','tempdb')
) D
© www.soinside.com 2019 - 2024. All rights reserved.