分区数据库还原问题

partitioned Database Restore issue

我在使用以下脚本恢复分区数据库时遇到问题。

我在数据库中有 7 个分区。

here is the code . 

declare @Sql varchar(max)

SET @Sql = 'RESTORE DATABASE [NEWS]
 FILE = ''DEMO'',
 FILEGROUP = ''DEMO''
 FROM DISK = ''C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Backup\DEMO_clone.bak
 WITH FILE = 1, NOUNLOAD, REPLACE, STATS = 10
GO
RESTORE LOG [NEWS]
  FROM DISK = ''C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Backup\DEMO_clone.bak''
  WITH RECOVERY
GO'''
EXEC (@Sql)

它显示的错误是“\”附近的语法不正确。

有人知道问题出在哪里吗?

GO 不是 T-SQL 命令,因此您不能将其包含在动态 SQL 脚本中。 GO 是由 SQL 服务器客户端工具解释的批处理分隔符。

这里不需要 GO 批处理分隔符或动态 SQL,所以我猜你问题中的 SQL 实际上是动态构建的。还有一些其他错误,例如代码中错误的引号。以下是更正后的版本。我认为您可能还需要将 NORECOVERY 添加到 RESTORE DATABASE

SET @Sql = 'RESTORE DATABASE [NEWS]
 FILE = ''DEMO'',
 FILEGROUP = ''DEMO''
 FROM DISK = ''C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Backup\DEMO_clone.bak''
 WITH FILE = 1, NOUNLOAD, REPLACE, STATS = 10;
 RESTORE LOG [NEWS]
  FROM DISK = ''C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Backup\DEMO_clone.bak'';
';