الگوریتم کاری برنامه
برای Restore کردن یک دیتابیس در برنامه از دستور زیر استفاده میشه .
که عبارت های داخل {} نمایش دهنده مقادیری است که باید جایگزین شوند .
RESTORE DATABASE [DBName] FROM DISK = N'.Bak File path' WITH FILE = 1, MOVE N'.bak Data LogicalName' TO N'DB MDF path', MOVE N'.bak Log LogicalName' TO N'DB LDF path', NOUNLOAD, REPLACE, STATS = 10
فایل های backup دیتابیس MSSQL شامل هر دو فایل Data,Log می باشند که هر کدام یک LogicalName دارند .
که در دستور بالا توسط bak Data LogicalName و bak Log LogicalName مشخص شده اند .
DB MDF path و DB LDF path نیز مسیر فایل های Data,Log دیتابیسی که میخواهیم فایل پشتیبانی را روی آن بریزیم مشخص می کند.
برای بدست آوردن اطلاعات فایل پشتیبان (LogicalName های Data,Log) باید از این دستور استفاده کرد .
RESTORE FILELISTONLY from disk='Bak FilePath'
که ما به LogicalName و Type نیاز داریم .در ستون Type ، حرف D مشخص کننده Data و L مشخص کننده Log است .
همانگونه که قبل تر گفته شد ما به مسیر فایل های Data و Log دیتابیس مقصد نیز احتیاج داریم .
که توسط sys.master_files به مسیر فایل ها و sys.sysdatabases به اطلاعات دیتابیس ها دسترسی خواهیم داشت .
که برای لیست کردن کلیه دیتابیس ها همراه با مسیر فایل های Data و Log کوئری زیر را نوشتم :
فقط تنها نکته ای که باقی می ماند این است که پس از Restore کردن دیتابیس از روی فایل پشتیبان LogicalName های دیتابیس به LogicalName های فایل پشتیبان (یا در واقع دیتابیس مبدأ) تغییر نام پیدا می کنند .
برای مثال اگر از دیتابیس MYDB با LogicalName های MYDB_MDF و MYDB_LDF یک پشتیبانی بگیریم و بخواهیم روی دیتابیس دیگری به نام YOURDB بازگردانی کنیم ، LogicalName های دیتابیس YOURDB به MYDB_MDF و MYDB_LDF تغییر می کنند .
به همین دلیل پس از انجام عمل Restore در صورتی که LogicalName های دیتابیس مقصد تغییر کرده باشند توسط دستور های زیر آن ها را به مقادیر اولیه تغییر نام می دهیم.
ALTER DATABASE {DBNAME} MODIFY FILE (NAME = {NewLogic_Data}, NEWNAME='{OldLogic_Data}')
ALTER DATABASE {DBNAME} MODIFY FILE (NAME = {NewLogic_Log}, NEWNAME='{OldLogic_Log}')
توضیح خاص دیگری نیست .