我想使用bak文件和Lite速度的存储过程在SQL Server 2008 R2中恢复数据库。以下是我的代码:
USE Master
Go
exec master.dbo.XP_RESTORE_DATABASE
@database="abc"
,@filename='M:\BACKUPS\xyz.bak'
,@WITH= 'REPLACE'
,@WITH= 'MOVE' "abc_DATA" TO "H:\SQLDATA\ABC.mdf"'
,@WITH= 'MOVE' "abc_LOG" TO "H:\SQLDATA\ABC.ldf"'
GO
执行上述查询后,我得到以下错误:
' abc_DATA'附近的语法不正确。
我不知道为什么我会收到此错误,因为我总是使用此查询来恢复数据库。
答案 0 :(得分:1)
这应该有效:
RESTORE DATABASE [abc]
FROM DISK = [DiskLocation]
WITH MOVE 'abc_data' TO ' H:\SQLDATA\ABC.mdf'
,MOVE 'abc_log' TO 'H:\SQLDATA\ABC.ldf'
答案 1 :(得分:0)
XP_RESTORE_DATABASE
不是SQL Server程序。它是Quest的LiteSpeed产品的一部分。 xp_restore_database
的文档为here
其次,该消息解释了什么是错误的。电话不正确。传递给@WITH
参数的字符串值在MOVE
之后立即终止,后跟对象标识符 "abc_DATA"
。
电话应该是:
exec master.dbo.XP_RESTORE_DATABASE @database="abc", @filename='M:\BACKUPS\xyz.bak'
,@WITH= 'REPLACE'
,@WITH= 'MOVE "abc_DATA" TO "H:\SQLDATA\ABC.mdf"'
,@WITH= 'MOVE "abc_LOG" TO "H:\SQLDATA\ABC.ldf"'
您会注意到语法着色现在将整个字符串描绘为红色。