如何通过恢复从sql 2000迁移到sql 2008?
-
06-07-2019 - |
题
我正在运行此代码:
RESTORE DATABASE [MyDB_2009May11]
FROM DISK = N'C:\DB Copy\MyDB_2009May11.bak'
WITH
MOVE N'Archive_Data'
TO N'C:\Program Files\Microsoft SQL Server\MSSQL10.SQL2008\MSSQL\DATA\MyDB_2009May11.mdf',
MOVE N'Data'
TO N'C:\Program Files\Microsoft SQL Server\MSSQL10.SQL2008\MSSQL\DATA\MyDB_2009May11.mdf',
MOVE N'Log'
TO N'C:\Program Files\Microsoft SQL Server\MSSQL10.SQL2008\MSSQL\DATA\MyDB_2009May11.ldf',
NOUNLOAD,
STATS = 10
GO
我收到了这个错误:
Msg 3176,Level 16,State 1,Line 1 文件'C:\ Program Files \ Microsoft SQL Server \ MSSQL10.SQL2008 \ MSSQL \ DATA \ MyDB_2009May11.mdf'由'Archive_Data'(3)和'Data'(1)声明。 WITH MOVE子句可用于重定位一个或多个文件。 Msg 3013,Level 16,State 1,Line 1 RESTORE DATABASE异常终止。
当我拥有的是备份文件时,我如何从sql server 2000迁移到2008?
:)感谢任何帮助。
解决方案
从sysaltfiles中选择*并查看正确的文件名,然后相应地更改移动中的名称
这将为您提供当前所有文件组的名称
select filename from master..sysaltfiles
where name = 'MyDB_2009May11'
如果您没有编写数据库脚本,请先执行此操作。确保文件夹存在,您可能还想更改文件大小
CREATE DATABASE [MyDB_2009May11] ON (NAME = N'Data',
FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10.SQL2008\MSSQL\DATA\MyDB_2009May11.mdf'
, SIZE = 12, FILEGROWTH = 10%),
(NAME = N'Archive_Data',
FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10.SQL2008\MSSQL\DATA\MyDB_2009May11.ndf'
, SIZE = 12, FILEGROWTH = 10%)
LOG ON (NAME = N'Log',
FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10.SQL2008\MSSQL\DATA\MyDB_2009May11.ldf'
, SIZE = 21, FILEGROWTH = 10%)
COLLATE SQL_Latin1_General_CP1_CI_AS
现在恢复应为此,请注意归档文件组的ndf扩展名
RESTORE DATABASE [MyDB_2009May11]
FROM DISK = N'C:\DB Copy\MyDB_2009May11.bak'
WITH
MOVE N'Archive_Data'
TO N'C:\Program Files\Microsoft SQL Server\MSSQL10.SQL2008\MSSQL\DATA\MyDB_2009May11.mdf',
MOVE N'Data'
TO N'C:\Program Files\Microsoft SQL Server\MSSQL10.SQL2008\MSSQL\DATA\MyDB_2009May11.ndf',
MOVE N'Log'
TO N'C:\Program Files\Microsoft SQL Server\MSSQL10.SQL2008\MSSQL\DATA\MyDB_2009May11.ldf',
NOUNLOAD,
STATS = 10
GO
其他提示
您正在尝试将Archive_Data和Data移动到同一个文件 - 更改文件名,您应该没问题:)
我也遇到了这个问题,只是添加一点我必须使用 REPLACE
子句,因为我正在恢复的数据库与数据库备份中的数据库不同:
RESTORE DATABASE [MyDB_2009May11]
FROM DISK = N'C:\DB Copy\MyDB_2009May11.bak'
WITH
MOVE N'Archive_Data'
TO N'C:\Program Files\Microsoft SQL Server\MSSQL10.SQL2008\MSSQL\DATA\MyDB_2009May11.mdf',
MOVE N'Data'
TO N'C:\Program Files\Microsoft SQL Server\MSSQL10.SQL2008\MSSQL\DATA\MyDB_2009May11.ndf',
MOVE N'Log'
TO N'C:\Program Files\Microsoft SQL Server\MSSQL10.SQL2008\MSSQL\DATA\MyDB_2009May11.ldf',
**REPLACE**,
NOUNLOAD,
STATS = 10
GO
不隶属于 StackOverflow