分区数据库还原问题

时间:2018-03-14 10:56:12

标签: sql-server database-partitioning database-restore

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

我在数据库中有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)

它将错误显示为'\'附近的错误语法。

任何人都知道问题是什么?

1 个答案:

答案 0 :(得分:0)

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

这里不需要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'';
';