كيفية ترحيل من SQL 2000 إلى SQL 2008 عن طريق استعادة؟

StackOverflow https://stackoverflow.com/questions/1010279

  •  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، مستوى 16 حالة 1، السطر 1 الملف 'C: ملفات \ برنامج \ مايكروسوفت SQL خادم \ MSSQL10.SQL2008 \ MSSQL \ DATA \ MyDB_2009May11.mdf' يطالب بها "Archive_Data" (3) و "البيانات" (1). يمكن استخدام جملة MOVE مع للانتقال ملف واحد أو أكثر. رسالة 3013، مستوى 16 حالة 1، السطر 1 استعادة قاعدة البيانات يتم إنهاء بشكل غير طبيعي.

وكيف حماقة لا يمكنني ترحيل من SQL Server 2000 لعام 2008 عندما كل ما لدي هو ملف النسخة الاحتياطية؟

و:) هو موضع تقدير أي مساعدة.

هل كانت مفيدة؟

المحلول

والقيام حدد * من sysaltfiles وإلقاء نظرة على أسماء الملفات الصحيحة ومن ثم تغيير الأسماء في هذه الخطوة أن يرحل وفقا لذلك

وهذا سوف تعطيك أسماء جميع filegroups وحاليا

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

نصائح أخرى

وأنت تحاول نقل Archive_Data والبيانات إلى نفس الملف - تغيير اسم الملف، ويجب أن يكون على ما يرام:)

وأنا واجهت هذه المشكلة أيضا، ومجرد إضافة صغيرة على I زيارتها إلى استخدام جملة 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 
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top