با سلام خدمت دوستان
من میخواهم از داخل برنامه از اطلاعات ذخیره شده در داخل SQL Server پشتیبان گیری کنم یعنی کاربری که Sql Server بلد نیست بتواند به راحتی از داخل برنامه پشتیبانگیری کرده و یا اطلاعات پشتیبانگیری شده را برگرداند.
با سلام خدمت دوستان
من میخواهم از داخل برنامه از اطلاعات ذخیره شده در داخل SQL Server پشتیبان گیری کنم یعنی کاربری که Sql Server بلد نیست بتواند به راحتی از داخل برنامه پشتیبانگیری کرده و یا اطلاعات پشتیبانگیری شده را برگرداند.
درود
میتونی این Command رو با استفاده از StoredProcedure یا Query اجرا کنی:
backup database pubs to disk = 'c:\pubs.bak'
البته این یه مثال خیلی ساده ست، حتما میدونی که Backup چقدر پارامتر داره!!؟؟
می تونی از این استفاده کنی :
try
if SaveDialog1.Execute then
ADOConnection1.Execute('backup database Pubs to disk='''+SaveDialog1.FileName+'''');
except
MessageDlg('عملیات پشتیبان گیری با شکست مواجه شد',mtError,[mbOK],0);
end;<span dir=ltr></span>
سلام
کدهای نوشته شده توسط دوستان تنها در حالتیکه بر روی سرور دستور اجرا شود صحیح است
ولی اگر میخواهی از روی کلاینتها هم اجازه 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'
آقای مجید افرا 222 تشکر از لطف شما ولی بنده با یک مشکل موجه شده ام و وقتی می خواهم برنامه را Restore کنم پیغام زیر ظاهر می گردد
بانک مورد نظر توسط کاربر دیگری مورد استفاده قرار گرفته است
لطفا کمک کنید
با تشکر
خب شاید Enterprise Manager هم اکنون اجرا است
اگر چه قبلا در این مورد زیاد بحث شده ولی
علاوه بر اونی که سروش(محمود) گفت ممکنه برنامه خودتون داره ازش استفاده میکنه که در این صورت قبل از ارسال این دستورات کافیه دستور زیر رو ارسال کنی.
use master
اگر باز هم با مشکلی مواجه شدی در بخش SQL Server یه جستجو بکن در این مورد بحثهای کاملی شده است
You never know what you can do until you try
بچه ها من یک component خوب دارم که یکی دو بار که این سوال مطرح شد گداشتم روی سایت چند وقتی از اون استفاده می کنم از کل بانک اطلاعاتی به راحتی در حال استفاده کپی می گیرم
اگه خاستید دوباره روی سایت می گذارم
می تونی از دستور Backup database و restore database هم استفاده کنی به راحتی جواب می ده
حرفهای جون کامپوننت رو بذار لطفا
من از این دستور استفاده می کنم امتحان کنید
try
Dm.ADOConnection1.Execute('backup database نام دیتابیس to disk = '''+pathback+''' ');
MessageDlg('عملیات پشتیبان گیری با موفقیت انجام شد',mtInformation,[mbOK],0);
except
MessageDlg('عملیات پشتیبان گیری با شکست مواجه شد',mtError,[mbOK],0);
دوست عزیز اگر این کامپننت را بگذاری لطف میکنی و اگر برای مناین کامپوننت را با کد بکاپ و ریستور را به من ایمل کنی از شما یک جهان ممنون میشوم چونخیلی خیلی کارم گیر است و اگر قیمت دارد شماره حساب بده تا به حساب واریز کنم منتظر هستم دوست عزیز
yahya_inlucky2006@yahoo.com
با سلام به همگی
من تویه 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.)
برخوردم چه کار کنم
سلام می خواهم این دو کامپوننت را برایم ارسال کنید
nadercpu@yahoo.com
try
if SaveDialog1.Execute then
ADOConnection1.Execute('backup database Pubs to disk='''+SaveDialog1.FileName+'''');
except
MessageDlg('عملیات پشتیبان گیری با شکست مواجه شد',mtError,[mbOK],0);
end;
با این کدی که قرار داده اید پس از هر بار گرفتن بکاپ حجم فایل بکاپ دو برابر میشه
لطفا راهنمایی کنید
دوست عزیز اگر این کامپننت را بگذاری لطف میکنی و اگر برای من این کامپوننت را با کد بکاپ و ریستور را به من ایمل کنی از شما یک دنیا ممنون میشوم sahar_msi17@yahoo.com
براي RESTORE كرد ديتابيس SQL شما بايد ابتدا دسترسي به بانك را محدود به يك دسترسي نماييد. (كه آ ن هم دسترسي خود Restore است)
و سپس اقدام به RESOTRE نماييد.
براي دسترسي محدود :
ALTER DATABASE MyDatabase SET SINGLE_USER
و يا
EXEC sp_dboption 'MyDataBaseName','single user','TRUE'
و سپس از هر نوع RESTORE كه دوست داري استفاده كن.
همان RESTORE كه استفاده كرده اي خوب است از همان استفاده كن.
و يا از لينك زير استفاده كنيد.
https://barnamenevis.org/showth...=120434&page=3
**نكته: تنظيم ديتابيس به حالت تك كاربره پس از بازيابي اطلاعات به صورت اتوماتيك به حالت چند كاربره باز مي گردد.
موفق باشيد.
سلام
من وتی ری استور می کنم و به وضعیت سینگل یوزر رفت دیگه به وضعیت عادی بر نمی گرده
چطور می تونم بعد از عملیات ریستور یوزر را به وضعیت عادی برگردانم؟
به علاوه اینکه من این عملیاتها را در برنامه اصلی نتونستم اجرا کنم و مجبور به ساخت یه اپلیکیشن جدید شدم .
همچنین چطور میشه از یه کاربر با پسورد پشتیبان گیری و ریستور کرد .
ممنون
سلام
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';
موفق و سربلند باشید.
آخرین ویرایش به وسیله java.source.ir : چهارشنبه 01 مهر 1388 در 16:59 عصر دلیل: غلط تایپی
1- اگه بخوام از کل دیتابیس Backup بگیرم باید از روش بالا استفاده کنم؟
آخه برنامه ای که دارم مینویسم تا دلتون بخواد Table داره...
اگه بخوام از تک تک جدول ها جداگانه Backup بگیرم تا فردا طول میکشه...
2- برای Restore کردن ، به چه صورت اطلاعات رو برمیگردونه؟
منظورم اینه که Append میکنه یا جایگزین میکنه؟ درکل : چه بلایی به سر رکوردهای تکراری میاد؟
و به چه صورت Restore کنم که رکورد تکراری نداشته باشم؟
آخه توی چند قسمت نیاز هست که به همون جدول Restore کنم...
سلام دوستان
من موقع restore کردن اطلاعات یک لودینگ گذاشتم ولی در زمان انجام restore برنامه هنگ میکنه و کار restore انجام میشه و بعد از اینکه عملیات تموم شد تازه لودینگ شروع به حرکت میکنه !
میشه راهنمایی کنید چطور میتونم همزمان و در حال بازگشت اطلاعات لودینگ هم کار کنه .
ممنون .
از Multi threading براي restore استفاده کنيد.
موفق باشيد.
با سلام خدمت دوستان
چگونه مي توان بانك sql را restore كنم
--------------------
لطفا كد بازيابي در سي شارپ ساده برام بفرستيد ممنونم
آخرین ویرایش به وسیله ss_sss733 : سه شنبه 02 شهریور 1389 در 16:36 عصر دلیل: این پست به دلیل تکراری بودن به طور خودکار ادغام شده است.
اين كد خيلي باحال بود براي بازيابي هم يك open dialog گذاشتم و كد زير رو نوشتم:
if (openDialog1.Execute) then begin
dm.ADOConnection1.Execute('use master RESTORE DATABASE db FROM DISK='''+OpenDialog1.FileName+'''');
فقط دو تا سووال:
1: وقتي فايل رو بازيابي مي كنم بايد حتما برنامه رو ببندم و باز كنم تا بتونم از برنامم استفاده كنم. براي رفع مشكل adoconnection را يك بار باز و بسته كردم مشكل حل شد ولي اطلاعاتي كه در ركورد از كمبوباكس وارد شده بود(چند تا آيتم ثابت داخل كمبوباكس وارد كردم) رو با حروف ناشناخته نشون مي ده كه اون هم با اجراي دوباره برنامه درست مي شه. چطور مي تونم اين مشكل رو رفع كنم؟
2ـ اين روش راه خوبي براي backup گرفتن هست يا نه؟