我遇到了使用以下脚本恢复分区数据库的问题。
我在数据库中有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)
它将错误显示为'\'附近的错误语法。
任何人都知道问题是什么?
答案 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'';
';