PDA

View Full Version : برنامه ای برای backup و restore برای sqlserver توسط smo



mohsen_csharp
یک شنبه 16 فروردین 1388, 09:32 صبح
با توجه به اینکه بسیاری از دوستان در زمینه backup و restore مشکل داشتند، کلاسی در سی شارپ به کمک Microsoft.SqlServer.Management.Smo نوشتم که این عملیات را مدیریت می کند.چند نکته:
عملیات ساخت پایگاه داده ، backup و restore در مسیرهای خاص مانند desktop انجام نمی شود (از محدودیت های SQL Server می باشد.)
این برنامه روند backup و restore را به درصد نمایش می دهد.
در شبکه از کامپیوتر کلاینت می توان با این برنامه به سرور متصل شد و عملیات مورد نظر را انجام داد ولی فراموش نکنید که باید مسیر عملیات محلی باشد یعنی اگر بنویسید c:\a.bak منظور درایو c سرور خواهد بود.
اگر عملیات restore قرار است انجام شود و پایگاه داده هدف موجود نباشد ابتدا آن را در مسیر دلخواه به کمک برنامه ایجاد کنید و سپس restore را روی آن انجام دهید.
این برنامه روی پایگاه داده هایی که دارای یک فایل data و یک فایل Log هستند به درستی کار می کند ولی اگه تعداد فایل های یک پایگاه داده بیشتر باشد باید تغییراتی در کد برنامه داده شود.
این برنامه روی sql server 2005 و sqlexpress آزمایش شده است از دوستان خواهشمند است مشکلات احتمالی این برنامه را به بنده گزارش دهند.

mohsen_csharp
سه شنبه 25 فروردین 1388, 10:33 صبح
از دوستانی که این برنامه رو دانلود کردن کسی نظری نداره.
آیا روی ورژن های مختلف 2000 و 2005 و 2008 کار می کنه؟

سجادحیدری
شنبه 29 فروردین 1388, 11:34 صبح
در vs 2008 اجرا میشه. ولی در 2005 نه چرا؟خودتون نوشتید؟ راسیتی ممنون بابت کد. منتظره چرا هستم.

mohsen_csharp
شنبه 29 فروردین 1388, 16:32 عصر
در vs 2008 اجرا میشه. ولی در 2005 نه چرا؟خودتون نوشتید؟ راسیتی ممنون بابت کد. منتظره چرا هستم.
بله برنامه رو خودم نوشتم
منظورم من ورژن های مختلف SQLServer بود نه visual studio

سجادحیدری
یک شنبه 06 اردیبهشت 1388, 22:23 عصر
کمی کد هاشو برام توضیخ می دید ؟

mohsen_csharp
دوشنبه 07 اردیبهشت 1388, 16:57 عصر
این برنامه به صورت open source هست شما می تونی با بررسی کد ها به راحتی از نحوه کارکرد آن مطلع شوید. بگید کجاش نامفهوم هست تا برتون توضیح بدم.

ehemitsme
یک شنبه 20 اردیبهشت 1388, 16:12 عصر
آقا خدا خیرتون بده.. ممنون

Ahmad_VB
شنبه 02 خرداد 1388, 19:09 عصر
سلام
یک سوال :
توی پروژه فایلی به نام SQLManagement.cs هست که کلی کدهای مختلف داخلشه !
این رو خودتون نوشتید یا اتوماتیک تولید شده و شما تغییرش دادید ؟
چون با VB می خوام اش !
راهی پیشنهاد می کنید ؟

mohsen_csharp
شنبه 02 خرداد 1388, 19:33 عصر
یک سوال :
توی پروژه فایلی به نام SQLManagement.cs هست که کلی کدهای مختلف داخلشه !
این رو خودتون نوشتید یا اتوماتیک تولید شده و شما تغییرش دادید ؟بله، همه کدهای داخل اونو خودم نوشتم.
فکر نکنم تبدیل کردنش به vb مشکل باشه.
هر جاش نامفهوم بود بگید تا توضیح بدم.

Ahmad_VB
شنبه 02 خرداد 1388, 20:15 عصر
نه تقریبا مفهومه ولی حجمش خیلی زیاده
ببینم چی میشه !

میگم راه ساده تری سراغ ندارید (کمتر کد ببره) ؟

mehran20_200
دوشنبه 19 مرداد 1388, 18:27 عصر
دوست عزيز ابتدا از به اشتراك گذاري اين پروژه تشكر مي كنم
من با يك مشكل اساسي بر خورد كردم
هنگام تهيه نسخه پشتيبان از SQLExpress2005 با پيغام this DataBase cloes not exist مواجه مي شوم
امكان داره بفرماييد چگونه اين مشكل را بايد رفع كرد؟
با تشكر

mehran20_200
دوشنبه 19 مرداد 1388, 22:24 عصر
سلام دوست عزيز
من اين لينك را پيدا كردم و كد را تست كردم
http://blogs.msdn.com/sqlexpress/archive/2007/03/20/backup-and-restore-with-user-instances.aspx
كاملا درست كار مي كند

چون من با كلاس شما آَشنايي ندارم امكان داره زحمت بكشيد و sqlexpress را هم به كلاس اضافه كنيد؟
فقط يك مورد:اگر فايل بكاپ از قبل موجود باشه به حجم آن اضافه مي شه(پس بايد چك كرد كه اگه فايل بكاپ از قبل موجود هستش ابتدا حذف بشه بعد بكاپ گيري انجام بشه)

با تشكر

HAMRAHSOFT.IR
سه شنبه 24 شهریور 1388, 14:06 عصر
روي اسكيول 2000 جواب نميده و خطا ميگير ميشه براي اونم درست كنيد؟

mohsen_csharp
دوشنبه 06 مهر 1388, 17:18 عصر
چون من با كلاس شما آَشنايي ندارم امكان داره زحمت بكشيد و sqlexpress را هم به كلاس اضافه كنيد
روي sqlExpreess 2005 به درستي كار مي كنه و هيچ مشكلي نداره.

روي اسكيول 2000 جواب نميده و خطا ميگير ميشه براي اونم درست كنيد
با sql 2000 تست نكردم و فكر كنم با 2000 كار نكنه چون براي sql 2000 به جاي SMO از DMO استفاده مي شود.

hamidsina
پنج شنبه 06 خرداد 1389, 21:29 عصر
خیلی آلی بود
دستت درد نکنه

mohsen_f_b
سه شنبه 11 خرداد 1389, 23:40 عصر
سلام
روی 2008 به مشکل خوردم!

Merila_Rad
جمعه 26 شهریور 1389, 13:04 عصر
ممنون از برنامه اما من نمیتونم فضای



using Microsoft.SqlServer.Management.Smo;

را اضافه کنم
یعنی وقتی مینویسم



using Microsoft.SqlServer.

بعد از گذاشتن نقطه فقط میتونم کلمه Server را اضافه کنم و کلمه Management ظاهر نمیشه
میتونید راهنماییم کنید

zizijoon
شنبه 03 مهر 1389, 21:39 عصر
سلام
روی 2008 به مشکل خوردم!


با سلام وتشکر
من هم روی SQL SERVER 2008 امتحان کردم همین مشکل وجود داشت .

mohsen_csharp
چهارشنبه 14 مهر 1389, 19:07 عصر
ممنون از برنامه اما من نمیتونم فضای

کد:
using Microsoft.SqlServer.Management.Smo;

را اضافه کنم
یعنی وقتی مینویسم

کد:
using Microsoft.SqlServer.

بعد از گذاشتن نقطه فقط میتونم کلمه Server را اضافه کنم و کلمه Management ظاهر نمیشه
میتونید راهنماییم کنید






دوست عزیز شما باید رفرنس های مورد نظر رو اضافه کنی که تو عکس نمایش داده شده.



من هنوز sql 2008 نصب نکردم که ببینم مشکل از کجاست اگه فرصت کنم بررسی می کنم

araz_pashazadeh
پنج شنبه 29 مهر 1389, 17:46 عصر
با عرض سلام خدمت دوستان
من کد زیر را در C#‎‎‎‎‎‎‎‎ برای پشتیبان و بازیابی اطلاعات نوشتم ولی در مرحله نهایی با یک مشکل مواجه می شم دلیلشم نمی دونم.
خیلی جستجو کردم اما به نتیجه نرسیدم لطفا من را راهنمایی کنین.



using Microsoft.SqlServer.Server;

using Microsoft.SqlServer.Management.Smo;

using Microsoft.SqlServer.Management.Common;
private static Server GetServer()
{
System.Data.SqlClient.SqlConnection TempConn = new System.Data.SqlClient.SqlConnection(
System.Configuration.ConfigurationManager.Connecti onStrings["BackupRestor_WFA_.Properties.Settings.LocalDatabas eConnectionString"].ConnectionString);
ServerConnection Conn = new ServerConnection(TempConn);
Server myServer = new Server(Conn);
return myServer;
}
public void BackupDataBase(string databaseName, string destinationPath)
{
lblBackup.Text = string.Format("Backup the {0} database!", databaseName);
Server myServer = GetServer();
Backup backup = new Backup();
backup.Action = BackupActionType.Database;
backup.Database = databaseName;
destinationPath = System.IO.Path.Combine(destinationPath, databaseName + ".bak");
backup.Devices.Add(new BackupDeviceItem(destinationPath, DeviceType.File));
backup.Initialize = true;
backup.Checksum = true;
backup.ContinueAfterError = true;
backup.Incremental = false;
backup.LogTruncation = BackupTruncateLogType.Truncate;
backup.PercentComplete += new PercentCompleteEventHandler(backup_PercentComplete );
backup.Complete +=
new Microsoft.SqlServer.Management.Common.ServerMessag eEventHandler
(backup_Complete);
// Perform backup.
backup.SqlBackup(myServer);
}
//The event handlers
public void backup_Complete
(object sender, Microsoft.SqlServer.Management.Common.ServerMessag eEventArgs e)
{
lblBackup.Text = string.Format(e.ToString() + "% Complete");
}
public void backup_PercentComplete(object sender, PercentCompleteEventArgs e)
{
lblBackup.Text = string.Format(e.Percent.ToString() + "% Complete");
}
private void btnBackUP_Click(object sender, EventArgs e)
{
BackupDataBase("LocalDatabase.mdf", "c:\\aeh");
}

mohamad68
جمعه 30 مهر 1389, 15:02 عصر
اینجا (http://irandevelopers.net/showthread.php?tid=70)هم یه backup و restore با smo هست
فکر کنم مفید باشه.

araz_pashazadeh
سه شنبه 04 آبان 1389, 16:03 عصر
اینجا (http://irandevelopers.net/showthread.php?tid=70)هم یه backup و restore با smo هست
فکر کنم مفید باشه.
دوست عزیز من الان چند وقت دنبال پتیبان گیری از SQLEXPRESS هستم ولی همه کد گذاشتن راهنمایی کردن راهنمایی آنها درست هم هستش ولی غافل از این که همه این کدها روی سیستمی که SQL Server نصب سده کار می کنه نه SQLEXPRESS و در هنگام پشتیبان گیری همشون یک نوع خطا میده که در پیام قبلی ضمینه کردم.
لطفا مدیران سایت در مورد این مشکل من و دوستان را راهنمایی کنن:افسرده:
ممنون میشم اگه کسی در این ضمینه من را یاری کنه:عصبانی++:

mohsen_csharp
چهارشنبه 05 آبان 1389, 12:51 عصر
دوست عزیز من الان چند وقت دنبال پتیبان گیری از SQLEXPRESS هستم ولی همه کد گذاشتن راهنمایی کردن راهنمایی آنها درست هم هستش ولی غافل از این که همه این کدها روی سیستمی که SQL Server نصب سده کار می کنه نه SQLEXPRESS و در هنگام پشتیبان گیری همشون یک نوع خطا میده که در پیام قبلی ضمینه کردم.
لطفا مدیران سایت در مورد این مشکل من و دوستان را راهنمایی کنن:افسرده:
ممنون میشم اگه کسی در این ضمینه من را یاری کنه:عصبانی++:
با سلام
من برنامه رو دوباره تست کردم با SQLEXPRESS هیچ مشکلی نداره
احتمالا شما مسیر بکاپ گیری رو درست انتخاب نکردید
به عنوان مثال من مسیر بکاپ گیری رو در درایو C انتخاب کردم دقیقا همین ارور را داد
SQL با بعضی مسیرها مشکل داره مثل Desctop و یا ریشه یک درایو
مسیر بکاپ گیری رو داخل یک فولدر در درایو C قرار بدین و تست کنید.
البته این مسیر باید از قبل وجود داشته باشه

araz_pashazadeh
چهارشنبه 05 آبان 1389, 19:04 عصر
من برنامه شما را اجرا کردم در همان اول کار هنگام برقراری ارتباط با خطا مواجه شدم در عکس ضمیمه کاملا مشخصه که من از چه کانکشی استفاده کردم و خطای هم که داده همون جا هستش البته ناگفته نماند من از ویندوز7 و SQLEXPRESS 2008 استفاده می کنم.
مشکل کار کجاست:عصبانی++:

mohsen_csharp
جمعه 07 آبان 1389, 15:36 عصر
من برنامه رو با sql express 2008 تست نکردم ولی دوستان گفتند که کلا با sql 2008 مشکل ورژن داره و اونو ساپورت نمی کنه

shocraneh
جمعه 14 آبان 1389, 09:51 صبح
این برنامه خیلی عالیه .اما dll مربوطه به فرم add نمیشه ؟؟من خیلی عجله دارم

mohsen_csharp
شنبه 15 آبان 1389, 21:58 عصر
سلام
این برنامه که DLL نداره فقط کافیه فایل SQLManagement.cs رو به پروژه ات Add کنی و یه بار پروژه رو Rebuildکن اونوقت کامپوننتش توی toolBox اضافه می شه و بکش روی فرم بزارش و ازش مانند مثالی که تو پست اول گذاشم استفاده کن

shocraneh
یک شنبه 16 آبان 1389, 14:33 عصر
من اینکارو کردم اما از
using Microsoft.SqlServer.Management.Common;
using Microsoft.SqlServer.Management.Smo;
خطا میگیره و کامپوننتی رو ADD نمیکنه . احیانا نباید Refrence به برنامم اضافه کنم ؟؟

mansourii
دوشنبه 17 آبان 1389, 19:20 عصر
------------

mehdi_7
پنج شنبه 11 فروردین 1390, 21:02 عصر
چرا باید حتما یک پایگاه داده بسازه و بعد عملیات بک آپ / ری استور رو انجام بده!!!!

bahramkazemi
چهارشنبه 06 اردیبهشت 1391, 10:57 صبح
باتشکر از برنامه خوبتان


من از sql2005 استفاده میکنم با xp مشکلی ندارد ولی در win7 کارنمکند کمک فوری

bahramkazemi
چهارشنبه 06 اردیبهشت 1391, 10:58 صبح
نقل قول: برنامه ای برای backup و restore برای sqlserver توسط smo

باتشکر از برنامه خوبتان


من از sql2005 استفاده میکنم با xp مشکلی ندارد ولی در win7 کارنمکند کمک فوری

freehorn3000
چهارشنبه 03 آبان 1391, 22:31 عصر
من اینکارو کردم اما از
using Microsoft.SqlServer.Management.Common;
using Microsoft.SqlServer.Management.Smo;
خطا میگیره و کامپوننتی رو ADD نمیکنه . احیانا نباید Refrence به برنامم اضافه کنم ؟؟

mmd2009
پنج شنبه 04 آبان 1391, 00:35 صبح
من اینکارو کردم اما از
using Microsoft.SqlServer.Management.Common;
using Microsoft.SqlServer.Management.Smo;
خطا میگیره و کامپوننتی رو ADD نمیکنه . احیانا نباید Refrence به برنامم اضافه کنم ؟؟

با سلام

بله شما نیاز دارید به این چند references :


Microsoft.SqlServer.Smo
Microsoft.SqlServer.SmoExtended
Microsoft.SqlServer.Management.Sdk.Sfc
Microsoft.SqlServer.ConnectionInfo

natilus
سه شنبه 07 بهمن 1393, 15:39 عصر
با توجه به اینکه بسیاری از دوستان در زمینه backup و restore مشکل داشتند، کلاسی در سی شارپ به کمک Microsoft.SqlServer.Management.Smo نوشتم که این عملیات را مدیریت می کند.چند نکته:
عملیات ساخت پایگاه داده ، backup و restore در مسیرهای خاص مانند desktop انجام نمی شود (از محدودیت های SQL Server می باشد.)
این برنامه روند backup و restore را به درصد نمایش می دهد.
در شبکه از کامپیوتر کلاینت می توان با این برنامه به سرور متصل شد و عملیات مورد نظر را انجام داد ولی فراموش نکنید که باید مسیر عملیات محلی باشد یعنی اگر بنویسید c:\a.bak منظور درایو c سرور خواهد بود.
اگر عملیات restore قرار است انجام شود و پایگاه داده هدف موجود نباشد ابتدا آن را در مسیر دلخواه به کمک برنامه ایجاد کنید و سپس restore را روی آن انجام دهید.
این برنامه روی پایگاه داده هایی که دارای یک فایل data و یک فایل Log هستند به درستی کار می کند ولی اگه تعداد فایل های یک پایگاه داده بیشتر باشد باید تغییراتی در کد برنامه داده شود.
این برنامه روی sql server 2005 و sqlexpress آزمایش شده است از دوستان خواهشمند است مشکلات احتمالی این برنامه را به بنده گزارش دهند.
با سلام و احترام خدمت شما دوستان و استادان محترم
بنده مبتدی هستم و یه سوالی داشتم میخواستم بدونم از برنامه بالا برای سوال زیر میتونم استفاده کنم؟؟

سوال :چطور می توانیم با استفاده از دستور (backup)در یک (sp )از طریق یک زبان برنامه نویسی مثل (vb.net) مسیر را از کامپیوتر (Server) به (local)تغییر دهیم?

با تشکر از شما

natilus
پنج شنبه 09 بهمن 1393, 20:43 عصر
با سلام و احترام خدمت شما دوستان و استادان محترم
بنده مبتدی هستم و یه سوالی داشتم میخواستم بدونم از برنامه بالا برای سوال زیر میتونم استفاده کنم؟؟

سوال :چطور می توانیم با استفاده از دستور (backup)در یک (sp )از طریق یک زبان برنامه نویسی مثل (vb.net) مسیر را از کامپیوتر (Server) به (local)تغییر دهیم?

با تشکر از شما

سلام
کسی جواب سوال منو بلد نیست؟