PDA

View Full Version : چگونگی گرفتن Backup و Restore کردن از اطلاعات SQL Server



samandari
دوشنبه 22 فروردین 1384, 14:08 عصر
با سلام خدمت دوستان
من میخواهم از داخل برنامه از اطلاعات ذخیره شده در داخل SQL Server پشتیبان گیری کنم یعنی کاربری که Sql Server بلد نیست بتواند به راحتی از داخل برنامه پشتیبانگیری کرده و یا اطلاعات پشتیبانگیری شده را برگرداند.

m-khorsandi
دوشنبه 22 فروردین 1384, 16:22 عصر
درود

میتونی این Command رو با استفاده از StoredProcedure یا Query اجرا کنی:


backup database pubs to disk = 'c:\pubs.bak'


البته این یه مثال خیلی ساده ست، حتما میدونی که Backup چقدر پارامتر داره!!؟؟

ahmadr
سه شنبه 23 فروردین 1384, 07:35 صبح
می تونی از این استفاده کنی :


try
if SaveDialog1.Execute then
ADOConnection1.Execute('backup database Pubs to disk='''+SaveDialog1.FileName+'''');
except
MessageDlg('عملیات پشتیبان گیری با شکست مواجه شد',mtError,[mbOK],0);
end;<span dir=ltr></span>

majid_afra222
سه شنبه 23 فروردین 1384, 08:06 صبح
سلام
کدهای نوشته شده توسط دوستان تنها در حالتیکه بر روی سرور دستور اجرا شود صحیح است
ولی اگر میخواهی از روی کلاینتها هم اجازه Backup و Restore بدی بهتره کد زیر رو استفاده کنی
همه Backup ها بر روی سرور و در پوشه ای به نام Backup در محل فیزیکی خود بانک اطلاعاتی ایجاد میشود

مثلا برای Northwind


تعیین محل فیزیکی بانک روی سرور راه دور
رشته پرس و جوی استفاده شده
SELECT filename FROM sysdatabases WHERE name = 'Northwind'

مسیر فیزیکی بر روی سرور برای بانک انتخاب شده
E&#58;\Program Files\Microsoft SQL Server\MSSQL\data

ایجاد پوشه فیزیکی جدید برای پشتیبانها روی سرور با دستور
EXEC master..xp_cmdshell &#91;md "E&#58;\Program Files\Microsoft SQL Server\MSSQL\data\Backup"&#93;

تهیه پشتیبان از بانک اطلاعاتی با استفاده از دستور
BACKUP DATABASE &#91;Northwind&#93; TO DISK = 'E&#58;\Program Files\Microsoft SQL Server\MSSQL\data\Backup\BackupNorthwind_Bak.bak' WITH INIT, NAME = N'Northwind_Bak', STATS = 10

برای بازیابی بانک اطلاعاتی
رفتن به مود تک کاربره با استفاده از پرس و جوی زیر
EXEC sp_dboption 'Northwind', 'single user', 'true'

تعیین محل فیزیکی بانک روی سرور راه دور
رشته پرس و جوی استفاده شده
SELECT filename FROM sysdatabases WHERE name = 'Northwind'

مسیر فیزیکی بر روی سرور برای بانک انتخاب شده
E&#58;\Program Files\Microsoft SQL Server\MSSQL\data

بازیابی اطلاعات با استفاده از پرس و جوی زیر
RESTORE DATABASE &#91;Northwind&#93; FROM DISK = 'E&#58;\Program Files\Microsoft SQL Server\MSSQL\data\Backup\BackupNorthwind_Bak.bak' WITH REPLACE , NOUNLOAD , STATS = 10, RECOVERY

خروج از مود تک کاربره با استفاده از پرس و جوی زیر
EXEC sp_dboption 'Northwind', 'single user', 'false'

مجتبی جوادی
چهارشنبه 29 آذر 1385, 18:55 عصر
آقای مجید افرا 222 تشکر از لطف شما ولی بنده با یک مشکل موجه شده ام و وقتی می خواهم برنامه را Restore کنم پیغام زیر ظاهر می گردد
بانک مورد نظر توسط کاربر دیگری مورد استفاده قرار گرفته است
لطفا کمک کنید
با تشکرhttp://C:\Documents and Settings\Javadi\Desktop\aaaa.jpg

soroush_vs
چهارشنبه 29 آذر 1385, 21:51 عصر
خب شاید Enterprise Manager هم اکنون اجرا است

mzjahromi
پنج شنبه 30 آذر 1385, 07:18 صبح
اگر چه قبلا در این مورد زیاد بحث شده ولی
علاوه بر اونی که سروش(محمود) گفت ممکنه برنامه خودتون داره ازش استفاده میکنه که در این صورت قبل از ارسال این دستورات کافیه دستور زیر رو ارسال کنی.


use master

اگر باز هم با مشکلی مواجه شدی در بخش SQL Server یه جستجو بکن در این مورد بحثهای کاملی شده است

حرفه ای
پنج شنبه 30 آذر 1385, 08:57 صبح
بچه ها من یک component خوب دارم که یکی دو بار که این سوال مطرح شد گداشتم روی سایت چند وقتی از اون استفاده می کنم از کل بانک اطلاعاتی به راحتی در حال استفاده کپی می گیرم
اگه خاستید دوباره روی سایت می گذارم

می تونی از دستور Backup database و restore database هم استفاده کنی به راحتی جواب می ده

bahar_2006
چهارشنبه 06 دی 1385, 17:24 عصر
سلام
کدهای نوشته شده توسط دوستان تنها در حالتیکه بر روی سرور دستور اجرا شود صحیح است
ولی اگر میخواهی از روی کلاینتها هم اجازه Backup و Restore بدی بهتره کد زیر رو استفاده کنی
همه Backup ها بر روی سرور و در پوشه ای به نام Backup در محل فیزیکی خود بانک اطلاعاتی ایجاد میشود

مثلا برای Northwind


تعیین محل فیزیکی بانک روی سرور راه دور
رشته پرس و جوی استفاده شده
SELECT filename FROM sysdatabases WHERE name = 'Northwind'

مسیر فیزیکی بر روی سرور برای بانک انتخاب شده
E&#58;\Program Files\Microsoft SQL Server\MSSQL\data

ایجاد پوشه فیزیکی جدید برای پشتیبانها روی سرور با دستور
EXEC master..xp_cmdshell &#91;md "E&#58;\Program Files\Microsoft SQL Server\MSSQL\data\Backup"&#93;

تهیه پشتیبان از بانک اطلاعاتی با استفاده از دستور
BACKUP DATABASE &#91;Northwind&#93; TO DISK = 'E&#58;\Program Files\Microsoft SQL Server\MSSQL\data\Backup\BackupNorthwind_Bak.bak' WITH INIT, NAME = N'Northwind_Bak', STATS = 10

برای بازیابی بانک اطلاعاتی
رفتن به مود تک کاربره با استفاده از پرس و جوی زیر
EXEC sp_dboption 'Northwind', 'single user', 'true'

تعیین محل فیزیکی بانک روی سرور راه دور
رشته پرس و جوی استفاده شده
SELECT filename FROM sysdatabases WHERE name = 'Northwind'

مسیر فیزیکی بر روی سرور برای بانک انتخاب شده
E&#58;\Program Files\Microsoft SQL Server\MSSQL\data

بازیابی اطلاعات با استفاده از پرس و جوی زیر
RESTORE DATABASE &#91;Northwind&#93; FROM DISK = 'E&#58;\Program Files\Microsoft SQL Server\MSSQL\data\Backup\BackupNorthwind_Bak.bak' WITH REPLACE , NOUNLOAD , STATS = 10, RECOVERY

خروج از مود تک کاربره با استفاده از پرس و جوی زیر
EXEC sp_dboption 'Northwind', 'single user', 'false'
سلام
می شه بیشتر توضیح بدین ؟چطور باید از این کد ها استفاده کنیم؟
با تشکر

fotondiamond
جمعه 08 دی 1385, 04:49 صبح
حرفهای جون کامپوننت رو بذار لطفا

shima_r
شنبه 16 دی 1385, 09:20 صبح
من از این دستور استفاده می کنم امتحان کنید



try
Dm.ADOConnection1.Execute('backup database نام دیتابیس to disk = '''+pathback+''' ');
MessageDlg('عملیات پشتیبان گیری با موفقیت انجام شد',mtInformation,[mbOK],0);
except


MessageDlg('عملیات پشتیبان گیری با شکست مواجه شد',mtError,[mbOK],0);

ghulam yahya ayobi
شنبه 01 اردیبهشت 1386, 05:49 صبح
بچه ها من یک component خوب دارم که یکی دو بار که این سوال مطرح شد گداشتم روی سایت چند وقتی از اون استفاده می کنم از کل بانک اطلاعاتی به راحتی در حال استفاده کپی می گیرم
اگه خاستید دوباره روی سایت می گذارم

می تونی از دستور Backup database و restore database هم استفاده کنی به راحتی جواب می ده

دوست عزیز اگر این کامپننت را بگذاری لطف میکنی و اگر برای مناین کامپوننت را با کد بکاپ و ریستور را به من ایمل کنی از شما یک جهان ممنون میشوم چونخیلی خیلی کارم گیر است و اگر قیمت دارد شماره حساب بده تا به حساب واریز کنم منتظر هستم دوست عزیز
yahya_inlucky2006@yahoo.com

hesam_a110
یک شنبه 22 مهر 1386, 11:22 صبح
با سلام به همگی
من تویه restore کردن به error
Msg 233, Level 20, State 0, Line 0
A transport-level error has occurred when sending the request to the server. (provider: Shared Memory Provider, error: 0 - No process is on the other end of the pipe.)
برخوردم چه کار کنم

nader kianey
یک شنبه 27 مرداد 1387, 13:24 عصر
بچه ها من یک component خوب دارم که یکی دو بار که این سوال مطرح شد گداشتم روی سایت چند وقتی از اون استفاده می کنم از کل بانک اطلاعاتی به راحتی در حال استفاده کپی می گیرم
اگه خاستید دوباره روی سایت می گذارم

می تونی از دستور Backup database و restore database هم استفاده کنی به راحتی جواب می ده
سلام می خواهم این دو کامپوننت را برایم ارسال کنید
nadercpu@yahoo.com

matinebi
سه شنبه 03 دی 1387, 21:26 عصر
try
if SaveDialog1.Execute then
ADOConnection1.Execute('backup database Pubs to disk='''+SaveDialog1.FileName+'''');
except
MessageDlg('عملیات پشتیبان گیری با شکست مواجه شد',mtError,[mbOK],0);
end;

با این کدی که قرار داده اید پس از هر بار گرفتن بکاپ حجم فایل بکاپ دو برابر میشه
لطفا راهنمایی کنید

sahar480
شنبه 14 دی 1387, 11:12 صبح
دوست عزیز اگر این کامپننت را بگذاری لطف میکنی و اگر برای من این کامپوننت را با کد بکاپ و ریستور را به من ایمل کنی از شما یک دنیا ممنون میشوم sahar_msi17@yahoo.com

saied_genius
شنبه 03 اسفند 1387, 19:11 عصر
براي RESTORE كرد ديتابيس SQL شما بايد ابتدا دسترسي به بانك را محدود به يك دسترسي نماييد. (كه آ ن هم دسترسي خود Restore است)

و سپس اقدام به RESOTRE نماييد.

براي دسترسي محدود :



ALTER DATABASE MyDatabase SET SINGLE_USER


و يا



EXEC sp_dboption 'MyDataBaseName','single user','TRUE'


و سپس از هر نوع RESTORE كه دوست داري استفاده كن.

همان RESTORE كه استفاده كرده اي خوب است از همان استفاده كن.
و يا از لينك زير استفاده كنيد.

http://barnamenevis.org/forum/showthread.php?t=120434&page=3

**نكته: تنظيم ديتابيس به حالت تك كاربره پس از بازيابي اطلاعات به صورت اتوماتيك به حالت چند كاربره باز مي گردد.

موفق باشيد.

java.source.ir
دوشنبه 09 شهریور 1388, 18:34 عصر
سلام
کدهای نوشته شده توسط دوستان تنها در حالتیکه بر روی سرور دستور اجرا شود صحیح است
ولی اگر میخواهی از روی کلاینتها هم اجازه Backup و Restore بدی بهتره کد زیر رو استفاده کنی
همه Backup ها بر روی سرور و در پوشه ای به نام Backup در محل فیزیکی خود بانک اطلاعاتی ایجاد میشود

مثلا برای Northwind


تعیین محل فیزیکی بانک روی سرور راه دور
رشته پرس و جوی استفاده شده
SELECT filename FROM sysdatabases WHERE name = 'Northwind'

مسیر فیزیکی بر روی سرور برای بانک انتخاب شده
E:\Program Files\Microsoft SQL Server\MSSQL\data

ایجاد پوشه فیزیکی جدید برای پشتیبانها روی سرور با دستور
EXEC master..xp_cmdshell [md "E:\Program Files\Microsoft SQL Server\MSSQL\data\Backup"]

تهیه پشتیبان از بانک اطلاعاتی با استفاده از دستور
BACKUP DATABASE [Northwind] TO DISK = 'E:\Program Files\Microsoft SQL Server\MSSQL\data\Backup\BackupNorthwind_Bak.bak' WITH INIT, NAME = N'Northwind_Bak', STATS = 10

برای بازیابی بانک اطلاعاتی
رفتن به مود تک کاربره با استفاده از پرس و جوی زیر
EXEC sp_dboption 'Northwind', 'single user', 'true'

تعیین محل فیزیکی بانک روی سرور راه دور
رشته پرس و جوی استفاده شده
SELECT filename FROM sysdatabases WHERE name = 'Northwind'

مسیر فیزیکی بر روی سرور برای بانک انتخاب شده
E:\Program Files\Microsoft SQL Server\MSSQL\data

بازیابی اطلاعات با استفاده از پرس و جوی زیر
RESTORE DATABASE [Northwind] FROM DISK = 'E:\Program Files\Microsoft SQL Server\MSSQL\data\Backup\BackupNorthwind_Bak.bak' WITH REPLACE , NOUNLOAD , STATS = 10, RECOVERY

خروج از مود تک کاربره با استفاده از پرس و جوی زیر
EXEC sp_dboption 'Northwind', 'single user', 'false'

سلام
با تشکر از پاسخ مفید شما در این رابطه. آقا خیلی به دردم خورد. امیدوارم همیشه در تمام مراحل زندگیتان موفق باشید.

emdadgar_shahed
چهارشنبه 01 مهر 1388, 12:42 عصر
سلام
من وتی ری استور می کنم و به وضعیت سینگل یوزر رفت دیگه به وضعیت عادی بر نمی گرده
چطور می تونم بعد از عملیات ریستور یوزر را به وضعیت عادی برگردانم؟
به علاوه اینکه من این عملیاتها را در برنامه اصلی نتونستم اجرا کنم و مجبور به ساخت یه اپلیکیشن جدید شدم .
همچنین چطور میشه از یه کاربر با پسورد پشتیبان گیری و ریستور کرد .
ممنون

java.source.ir
چهارشنبه 01 مهر 1388, 16:51 عصر
سلام
emdadgar_shahed عزیز؛ در رابطه با سوال اولتون باید به صورت زیر عمل نمایید تا بانک شما از حالت تک کاربره خارج شود (این دستور را بعد از انجام عملیات restore قرار دهید.):


EXEC sp_dboption 'Northwind', 'single user', 'false'

اگر بخواهید دستورات اشاره شده را در محیط SQL Server انجام دهید باید ابتدا یک Store Procedure ایجاد نمایید و سپس دستورات زیر را در آن وارد نمایید:
عملیات پشتیبان گیری:


CREATE PROCEDURE backupOP
@destination nvarchar(900),
@fileName nvarchar(900)
as
BACKUP DATABASE [IIMDB]
TO DISK = @destination
WITH INIT, NAME = @fileName, STATS = 10;

عملیات بازیابی:


CREATE PROCEDURE restoreOP
@destination nvarchar(900)
as
EXEC sp_dboption 'IIMDB', 'single user', 'true';

RESTORE DATABASE [IIMDB]
FROM DISK = @destination
WITH REPLACE , NOUNLOAD , STATS = 10, RECOVERY;

EXEC sp_dboption 'IIMDB', 'single user', 'false';

موفق و سربلند باشید.

error682
یک شنبه 12 مهر 1388, 11:35 صبح
1- اگه بخوام از کل دیتابیس Backup بگیرم باید از روش بالا استفاده کنم؟
آخه برنامه ای که دارم مینویسم تا دلتون بخواد Table داره...
اگه بخوام از تک تک جدول ها جداگانه Backup بگیرم تا فردا طول میکشه...
2- برای Restore کردن ، به چه صورت اطلاعات رو برمیگردونه؟
منظورم اینه که Append میکنه یا جایگزین میکنه؟ درکل : چه بلایی به سر رکوردهای تکراری میاد؟
و به چه صورت Restore کنم که رکورد تکراری نداشته باشم؟
آخه توی چند قسمت نیاز هست که به همون جدول Restore کنم... :متفکر:

xboycooper
سه شنبه 27 بهمن 1388, 12:20 عصر
سلام دوستان :چشمک:
من موقع restore کردن اطلاعات یک لودینگ گذاشتم ولی در زمان انجام restore برنامه هنگ میکنه و کار restore انجام میشه و بعد از اینکه عملیات تموم شد تازه لودینگ شروع به حرکت میکنه !

میشه راهنمایی کنید چطور میتونم همزمان و در حال بازگشت اطلاعات لودینگ هم کار کنه .
ممنون .

saied_genius
سه شنبه 27 بهمن 1388, 12:24 عصر
از Multi threading براي restore استفاده کنيد.

موفق باشيد.

ss_sss733
سه شنبه 02 شهریور 1389, 16:33 عصر
با سلام خدمت دوستان
چگونه مي توان بانك sql را restore كنم
--------------------
لطفا كد بازيابي در سي شارپ ساده برام بفرستيد ممنونم

YkA1363
سه شنبه 31 مرداد 1391, 21:27 عصر
می تونی از این استفاده کنی :


try
if SaveDialog1.Execute then
ADOConnection1.Execute('backup database Pubs to disk='''+SaveDialog1.FileName+'''');
except
MessageDlg('عملیات پشتیبان گیری با شکست مواجه شد',mtError,[mbOK],0);
end;<span dir=ltr></span>
اين كد خيلي باحال بود براي بازيابي هم يك open dialog گذاشتم و كد زير رو نوشتم:

if (openDialog1.Execute) then begin
dm.ADOConnection1.Execute('use master RESTORE DATABASE db FROM DISK='''+OpenDialog1.FileName+'''');
فقط دو تا سووال:
1: وقتي فايل رو بازيابي مي كنم بايد حتما برنامه رو ببندم و باز كنم تا بتونم از برنامم استفاده كنم. براي رفع مشكل adoconnection را يك بار باز و بسته كردم مشكل حل شد ولي اطلاعاتي كه در ركورد از كمبوباكس وارد شده بود(چند تا آيتم ثابت داخل كمبوباكس وارد كردم) رو با حروف ناشناخته نشون مي ده كه اون هم با اجراي دوباره برنامه درست مي شه. چطور مي تونم اين مشكل رو رفع كنم؟
2ـ اين روش راه خوبي براي backup گرفتن هست يا نه؟