2009-06-18 84 views
2

我運行這段代碼:如何通過恢復從sql 2000遷移到sql 2008?

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 

我得到這個錯誤:

消息3176,級別16,狀態1,行1個 文件「C:\ Program Files文件\ Microsoft SQL Server的\ MSSQL10.SQL2008 \ MSSQL \ DATA \ MyDB_2009May11.mdf'由'Archive_Data'(3)和'Data'(1)聲明。 WITH MOVE子句可用於重定位一個或多個文件。 消息3013,級別16,狀態1,行1 RESTORE DATABASE正在異常終止。

當我擁有的是備份文件時,如何從SQL Server 2000遷移到2008?

:)任何幫助表示讚賞。

回答

1

做一個SELECT * FROM sysaltfiles中,並期待在正確的文件名,然後更改名稱在轉會到本部據此

這會給你所有的文件組的名稱目前

select filename from master..sysaltfiles 
where name = 'MyDB_2009May11' 

,如果你還沒有的照本宣科DATABSE那麼這樣做第一。確保文件夾存在,你可能還需要改變的filesizes

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 

現在的恢復應該是這樣的,注意存檔文件組

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 
3

你試圖Archive_Data和數據移動到同一個文件 - 更改文件名,你應該罰款:)

+0

謝謝阿龍,我想這爲t他最簡單的答案。爲你+1。 – Sebastian 2010-02-24 05:21:38

+0

這實際上是我的解決方案。我通過GUI來創建我的恢復腳本,但它有一些相同的文件名。所以我改變了他們,它的工作。 +1 – 2010-08-25 17:48:22

0

我就遇到了這個問題,以及在NDF擴展,只是對我一個小插件必須使用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