PDA

View Full Version : بازیابی و انتقال اطلاعات از یک FileGroup یک Backup به فایل گروه دیتابیس اصلی



mehdin69
پنج شنبه 28 فروردین 1393, 18:39 عصر
سلام دوستان
من یه مشکلی دارم که توی فروم های دیگه هم مطرح کردم نهایتاً به جواب زیر رسیدم که باز هم مشکل داره ممنون میشم یه نگاهی بهش بندازید تا مشکل این سوال حل شه
-- صورت مسئله من اینه : می خوام اطلاعات یک فایل گروه رو ازش Backup بگیرم و اون فایل گروه رو ببرم روی یک سیستم دیگه و اونجا Restore کنم تا اطلاعات روی فایل گروه سیستم جدید بازیابی شه
حالا جوابی که بهش رسیدم مشلش اینه که Backup & Restore رو میگیره اما فقط برای بار اول و به شرطی که توی دیتاهای جدول تغییری ایجاد نشه
مثلاً توی دستور زیر اطلاعات جدول ( 1و2و3 ) هست اگه این و تغییر بدیم دیگه Backup از فایل گروه گرفته میشه اما دیگه Restore انجام نمیشه
Help Me



Use master
GO
IF DB_ID('TestFileGroup')>0
BEGIN
ALTER DATABASE TestFileGroup SET SINGLE_USER WITH ROLLBACK IMMEDIATE
DROP DATABASE TestFileGroup
END
GO
--ایجاد بانک اطلاعاتی با یک فایل گروه
CREATE DATABASE TestFileGroup ON PRIMARY
( NAME = N'TestFileGroup', FILENAME = N'C:\DUMP\TestFileGroup.mdf' ),
FILEGROUP FG1 ( NAME = N'TestFG', FILENAME = N'C:\DUMP\TestFG.ndf' )
LOG ON ( NAME = N'TestFileGroup_log', FILENAME = N'C:\DUMP\TestFileGroup_log.ldf' )
GO
USE TestFileGroup
GO
--ایجاد جدول در فایل گروه مورد نظر
CREATE TABLE Table_1
(
id int
&nbsp<img src="images/smilies/wink.png" border="0" alt="" title="Wink" class="inlineimg"> ON FG1
GO
--درج چند رکورد تستی
INSERT INTO Table_1 VALUES (1),(2),(3)
GO
--بازیابی اطلاعات از فایل گروه مورد نظر
SELECT * FROM Table_1
GO
USE master
GO
--تهیه نسخه پشتیبان از فایل گروه مورد نظر
BACKUP DATABASE TestFileGroup FILEGROUP = N'FG1'
TO DISK = N'C:\DUMP\TestFileGroup_TestFG.bak' WITH FORMAT
GO
USE master
GO
--بازیابی فایل گروه مورد نظر
RESTORE DATABASE TestFileGroup FILE = N'TestFG' FROM DISK = N'C:\DUMP\TestFileGroup_TestFG.bak' --WITH FILE = 1, recovery, NOUNLOAD, STATS = 10
GO
USE TestFileGroup
GO
--به وضعیت فایل مور نظر توجه کنید
--بررسی لیست دیتا فایل های بانک اطلاعاتی
SELECT name,physical_name,state_desc,is_read_only FROM sys.database_files
GO
--بررسی لیست فایل گروه های بانک اطلاعاتی
SELECT name,is_read_only FROM sys.filegroups
GO


--حالا سعی کنید داده در جدولی که در فایل گروه مورد نظر قرار دارد درج کنید
--درج چند رکورد تستی
INSERT INTO Table_1 VALUES (4),(5),(6)
GO
--بازیابی اطلاعات از فایل گروه مورد نظر
SELECT * FROM Table_1
GO
---output:
/*
Msg 667, Level 16, State 1, Line 1
The index "" for table "dbo.Table_1" (RowsetId 72057594039042048) resides on a filegroup ("FG1") that cannot be accessed because it is offline, is being restored, or is defunct.


Msg 8653, Level 16, State 1, Line 1
The query processor is unable to produce a plan for the table or view 'Table_1' because the table resides in a filegroup which is not online.


*/
USE master
GO
--تهیه لاگ بکاپ
BACKUP LOG TestFileGroup TO DISK = N'C:\DUMP\TestFileGroup_LOG.bak' WITH FORMAT
GO
--بازیابی لاگ بکاپ
RESTORE LOG TestFileGroup FROM DISK = N'C:\DUMP\TestFileGroup_LOG.bak' --WITH FILE = 2, NOUNLOAD, STATS = 10
GO
USE TestFileGroup
--حالا سعی کنید داده در جدولی که در فایل گروه مورد نظر قرار دارد درج کنید
--درج چند رکورد تستی
INSERT INTO Table_1 VALUES (4),(5),(6)
GO
--بازیابی اطلاعات از فایل گروه مورد نظر
SELECT * FROM Table_1
GO