• صفحه اصلی

  • خاطرات

  • کارنامه کنکور ارشد کامپیوتر 89

  • آموزش

  • اخبار

  • فال حافظ

  • مقالات

  • تبریک و تشکر

  • همکلاسی ها

  • کاربران سایت

  • انجمن ها

  • سئوالات متداول

  • نظر سنجی

  • تماس با ما

  • درباره ما

  • ورود


     
    نام انجمن: آموزش C# , ASP.NET

    مثال کاربردی در زبان #C برای پشتیبان گیری خودکار در زمانهای معین از یک

    مثال کاربردی در زبان #C برای پشتیبان گیری خودکار در زمانهای معین از یک بانک اطلاعاتی SQL

    این یک مثال کاربردی در زبان #C برای پشتیبان گیری خودکار در زمانهای معین از یک بانک اطلاعاتی SQL بوسیله Microsoft SQL Server Agent می باشد. دراین مثال از کامپوننت SQL-Demo Dll استفاده شده است. این برنامه برروی کامپیوتری که SQL Server 2000 و همچنین VS2005 برروی آن نصب شده باشد اجرا می گردد.
    SQLDMO در زمان نصب SQL Server و یا SQL Client نصب می گردد. بعد از اجرای برنامه ابتدا در EditBox مربوطه نام سرور و نام کاربری و کلمه عبور را وارد نمایید وسپس لینک Connect را کلیک نمایید تا لیست بانکهای اطلاعات موجود به Combobox زیر آن اضافه شود حال یک بانک را انتخاب و سپس زمانهای پشتیبان گیری را از طریق کنترلهای مربوطه بر روی فرم بعد از تنظیمات و فشردن دکمه Craete Backup می توانید بصورت دستی جهت حصول از صحت عملکرد برنامه آن را کنترل کنید.
    جهت اینکار وارد SQL Server Enterprise شوید و سپس Manegement Option را انتخاب کنید در مرحله بعد SQL Server Agent را باز کنید درمرحله بعد پنجره Job را باز کنید.کنترل کنید که آیا ایتم Job تعریفی موجود می باشد یا خیر.سپس برروی Job که اخیراً ساخته شده است کلیک راست و سپس گزینه Start Job را کلیک نمایید و سپس که آیا در مسر ذکر شده فایلهای پشتیبان فایل Backup ساخته شده موجود می باشد یا خیر.

     

    اضافه نمودن Refrence مربوط به SQL Demo DLl به پروژه

     

    برای این کار می توانید در پنجره Solution Explorer کلیک راست و سپس گزینه Add Reference را کلیک و در پنجره باز شده گزینه Microsoft SQLDMO Object Library را انتخاب و OK نمایید. توابع و کدهای بکاررفته در این پروژه بشرح زیر می باشد.

     

    public void DisplayServerList(ComboBox cboListName)
    {
    try
    {
    SQLDMO.Application oSQLServerDMOApp = new SQLDMO.Application();
    Info.informationLayer info = new Info.informationLayer();

     

    SQLDMO.NameList oNameList;
    oNameList = oSQLServerDMOApp.ListAvailableSQLServers();
    for (int intIndex = 0; intIndex <= oNameList.Count - 1; intIndex++)
    {
    if (oNameList.Item(intIndex as object) != null)
    {
    cboListName.Items.Add(oNameList.Item(intIndex).ToS tring());
    }
    }
    if (cboListName.Items.Count > 0)
    cboListName.SelectedIndex = 0;
    else
    cboListName.Text = "(Local)";
    }
    catch
    {
    }
    }
    اتصال به سرور مورد نظر و استخراج بانکهای موجود درآن

     

    public void DisplayDatabases(ComboBox cboDatabase,Info.informationLayer info)
    {
    try
    {
    SQLDMO._SQLServer SQLServer = new SQLDMO.SQLServerClass();
    cboDatabase.Items.Clear();
    SQLServer.Connect(info.strServerName,info.strLogin Name,info.strPwd);
    foreach (SQLDMO.Database db in SQLServer.Databases)
    {
    if (db.Name != null)
    cboDatabase.Items.Add(db.Name);
    }
    cboDatabase.Sorted = true;
    if (cboDatabase.Items.Count == 0)cboDatabase.Text = "";
    }
    catch (Exception err)
    {
    info.ErrorMessageDataLayer = err.Message;
    }
    }



    ساختن Job در SQL Server Agent

     

    public void CreateJob_Sql(Info.informationLayer info)
    {
    try
    {
    SQLDMO._SQLServer SQLServer = new SQLDMO.SQLServerClass();
    SQLDMO.Job SQLJob = new SQLDMO.Job();
    SQLDMO.JobSchedule SQLSchedule = new SQLDMO.JobSchedule();

     

    SQLServer.Connect(info.strServerName, info.strLoginName, info.strPwd);

     

    switch (SQLServer.JobServer.Status)
    {
    case SQLDMO_SVCSTATUS_TYPE.SQLDMOSvc_Stopped:
    SQLServer.JobServer.Start();
    SQLServer.JobServer.AutoStart = true;
    break;
    }

     

    SQLJob.Name = info.strDatabaseName;
    SQLJob.Description = "Check and Backup" + info.strDatabaseName;

     

    SQLServer.JobServer.Jobs.Add(SQLJob);
    SQLJob.Category = "Database Maintenance";

     

    SQLDMO.JobStep aJobStep = new SQLDMO.JobStep();

     

    aJobStep.Name = "Step 2: Backup the Database";
    aJobStep.StepID = 1;

     

    aJobStep.DatabaseName = info.strDatabaseName;

     

    aJobStep.SubSystem = "TSQL";
    //------>>> If BackUp Folder is Not Found then create BackUp Folder.

     

    string DirectoryName = "D:\BackUp";
    if (Directory.Exists(DirectoryName)==false)
    {
    System.IO.Directory.CreateDirectory(DirectoryName);
    }
    //------>>>
    string sExt;
    sExt="EXEC master.dbo.xp_sqlmaint '-S " +
    info.strServerName + " -U " + info.strLoginName +
    " -P " + info.strPwd + " -D " + info.strDatabaseName +
    " -CkDB -CkAl -CkCat -BkUpMedia DISK -BkUpDB D:\Backup -BkExt
    BAK -DelBkUps 2weeks -BkUpOnlyIfClean -Rpt
    D:\Backup\BackDB_Checks.txt'";
    aJobStep.Command = sExt;
    aJobStep.OnSuccessAction =
    SQLDMO_JOBSTEPACTION_TYPE.SQLDMOJobStepAction_QuitWithSuccess;
    aJobStep.OnFailAction =
    SQLDMO_JOBSTEPACTION_TYPE.SQLDMOJobStepAction_QuitWithFailure;
    SQLJob.JobSteps.Add(aJobStep);
    SQLJob.ApplyToTargetServer(info.strServerName);
    aJobStep.DoAlter();
    SQLJob.Refresh();
    aJobStep.Refresh();
    }
    catch (Exception Err)
    {
    info.ErrorMessageDataLayer = Err.Message;
    }
    }



    ساخت زمانبندی Job درSQL Server Agent

    public void CreateShedule_Sql(Info.informationLayer info)
    {
    try
    {
    //it will take bkp every week 2 day
    SQLDMO.Job SQLJob = new SQLDMO.Job();

     

    SQLDMO._SQLServer SQLServer = new SQLDMO.SQLServerClass();
    SQLDMO.JobSchedule SQLSchedule = new SQLDMO.JobSchedule();

     

    SQLServer.Connect(info.strServerName, info.strLoginName, info.strPwd);
    SQLJob = SQLServer.JobServer.Jobs.Item(info.strDatabaseName );

     

    // create a new JobSchedule object
    SQLSchedule.Name = "Weekly Backup";
    SQLSchedule.Schedule.FrequencyType =
    SQLDMO.SQLDMO_FREQUENCY_TYPE.SQLDMOFreq_Weekly;
    SQLSchedule.Schedule.FrequencyInterval = 2;
    SQLSchedule.Schedule.FrequencyRecurrenceFactor = 2;

     

    // // set backup start date
    SQLSchedule.Schedule.ActiveStartDate = info.intStartDate;
    SQLSchedule.Schedule.ActiveStartTimeOfDay = info.intStartTime;
    //// this schedule has no end time or end date

     

    SQLSchedule.Schedule.ActiveEndDate = 99991231;
    SQLSchedule.Schedule.ActiveEndTimeOfDay = 235959;

     

    //// add the schedule to the Job
    SQLJob.BeginAlter();
    SQLJob.JobSchedules.Add(SQLSchedule);
    SQLJob.DoAlter();
    //SQLJob.JobSchedules.Refresh();
    info.ErrorMessageDataLayer = "New Sql Job [Databasename= " +
    info.strDatabaseName + " ]Sucessfully Created. ";
    }

     

    catch (Exception err)
    {
    info.ErrorMessageDataLayer = err.Message;
    }
    }

    نگارنده : زهرا صحرايي تاریخ ارسال : 1389/3/2-00:13:19ارسال نظر
    تعداد بازدیدکنندگان این صفحه تاکنون 158
    مطالب مرتبط
    image مقدمه اي بر سي شارپ : قسمت نهم
    image مقدمه اي بر سي شارپ : قسمت هشتم
    image مقدمه اي بر سي شارپ : قسمت هفتم
    image مقدمه اي بر سي شارپ : قسمت- ششم
    image مقدمه اي بر سي شارپ : قسمت- پنجم
    image مقدمه اي بر سي شارپ : قسمت چهارم
    image مقدمه اي بر سي شارپ : قسمت- سوم
    image مقدمه اي بر سي شارپ : قسمت دوم
    image مقدمه اي بر سي شارپ : قسمت اول
    image ذخيره متن فارسي در Sql Server
     

    ورود اعضا

    خدایا تو بر کار خیرم بدار
    خدایا چنان کن سرانجام کار تو خوشنود باشی و ما رستگار

    تبلیغات سایت های یادمانه ای:

       فروشگاه اینترنتی سون سون 

       mousazadeh 

       تبادل امن رهپویان آینده