2009-06-18 7 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サーバ\ MSSQL10.SQL2008 \ MSSQL \ DATA \ MyDB_2009May11.mdfは、 'Archive_Data'(3)および 'Data'(1)によって要求されます。 WITH MOVE句を使用すると、1つ以上のファイルを再配置できます。 メッセージ3013、レベル16、状態1、行1 RESTORE DATABASEが異常終了しています。

私が持っているものすべてがバックアップファイルである場合、どのようにSQL Server 2000から2008に移行するのですか?

:)ご迷惑をおかけして申し訳ございません。

答えて

1

が選択を行う細かいこと、正しいファイル名を見て、その後、名前を変更する必要があります動きに応じて

これは、あなたはまだスクリプトdatabseを持っていない場合は、現在

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

が、その後、最初にこれを行うあなたのすべてのファイルグループの名前を与える部分に。あなたもこれをする必要があります復元今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 
+0

Dude。それは素晴らしい答えでした。私は午前中にオフィスに戻るときにこれを試してみます。どうもありがとう! – bitcycle

3

あなたが同じファイルにArchive_Dataとデータを移動しようとしている - ファイル名を変更し、あなたががsysaltfilesから* :)

+0

おかげでアーロン、私はこれがトンだと思います彼は簡単な答えです。 +1してください。 – Sebastian

+0

これは実際私の解決策でした。私は復元スクリプトを作成するためにGUIを使いましたが、いくつかのファイル名が同じでした。だから私はそれらを変更し、それは働いた。 +1 –

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 
関連する問題