نمایش نتایج 1 تا 14 از 14

نام تاپیک: مانیتورینگ database

Threaded View

پست قبلی پست قبلی   پست بعدی پست بعدی
  1. #1
    مدیر بخش آواتار محمد رضا فاتحی
    تاریخ عضویت
    مهر 1387
    محل زندگی
    کهنسالترین موجود زنده در شهر منه
    پست
    1,184

    مانیتورینگ database

    سلام دوستای خوبم
    یک سیستم برخط باید طراحی بشه که به صورت لحظه ای هر تغییری که توی دیتابیس رخ می ده رو به کاربر نشون بده و شامل چهار حالته
    یکی از روش های ساده استفاده از نخ و while(true) که همه می دونن کار خیلی هزینه بری... خودم امتحان کردم usage cpu تو سیستم من cpu i7 حدود 85 درصد شد!!!!

    یکی دیگه از روشها استفاده از کلاس SqlDependency بعد از کلی اینور اونور زدن به نمونه کد زیر رسیدم



    private string cnnstring = "connectionSTR";
    private void dep_onchanged(object sender, SqlNotificationEventArgs e)
    {
    SqlDependency dep = (SqlDependency)sender;
    dep.OnChange -= dep_onchanged;
    }
    DataTable selectdt()
    {
    SqlDependency.Stop(cnnstring);
    SqlDependency.Start(cnnstring);
    string command = "select name from student where id='0'";
    SqlConnection con = new SqlConnection(cnnstring);
    SqlCommand com = new SqlCommand(command, con);
    com.Notification = null;
    DataTable dt = new DataTable();
    SqlDataAdapter da = new SqlDataAdapter();
    da.SelectCommand = com;
    SqlDependency dep = new SqlDependency(com);
    dep.OnChange += dep_onchanged;
    con.Open();
    da.Fill(dt);
    con.Close();
    return dt;
    }
    private void buttonX1_Click(object sender, EventArgs e)
    {
    selectdt();
    }


    البته این کار الزاماتی داره که باید سمت SQl انجام بشه اینم کوئری مورد نظر


    alter database mydb set enable_Broker
    create queue changed_queue
    create service changed_srv on queue changed_queue('http://schemas.microsoft.com/sql/notifications/postquerynotification');
    grant SUBSCRIBE query notifications to myLoginuser



    خوب اشتباه نکنید.... آموزش نیست!!!!!!

    سوالای من:
    تو بحث sql به دومورد بر خوردم
    الف) دستور alter database mydb set enable_Broker خیلی طول کشید و اصلا اجرا نشد به جاش اینو بکار بردم

    alter database mydb set enable_broker with rollback immediate;


    ب) تو این دستور هم

    create service changed_srv on queue changed_queue('http://schemas.microsoft.com/sql/notifications/postquerynotification');

    خطای دسترسی به آدرس رو میداد که من حذفش کردم

    create service changed_srv on queue changed_queue;


    تا اینجا آیا این دوتا کار خللی به روند اجرای کلاس SqlDependency وارد نمی کنه؟؟

    ثانیا بر فرض خللی ایجاد نشد... چکار کنیم که آنلاین تشخیص بده... تو یه نمونه کد استخراج اطلاعات رو گذاشته بود تو یه دکمه در صورتی که تو برنامه من قراره سرور دیتابیس رو تغییر بده کلاینت ها متوجه بش

    ثالثا آیا روش یا متد کلاس یا هرچیز دیگه ای که بهتر عمل کنه می شناسید؟؟

    ببخشید طولانی شد!!

    خیلی درگیر این مساله هستم... برنامه تموم شده و تو مقیاس آزمایشگاهی تست شده... ولی این مساله(استفاده از حلقه بی نهایت و نخ) هزینه بره برای سیستم های مقصد
    آخرین ویرایش به وسیله Mahmoud.Afrad : چهارشنبه 15 مهر 1394 در 22:32 عصر

تاپیک های مشابه

  1. بروز رسانی database از client
    نوشته شده توسط keivan2003 در بخش ASP.NET Web Forms
    پاسخ: 6
    آخرین پست: شنبه 23 دی 1391, 21:53 عصر
  2. asp-database-send email
    نوشته شده توسط komeil64 در بخش ASP.NET Web Forms
    پاسخ: 3
    آخرین پست: یک شنبه 03 تیر 1386, 21:26 عصر
  3. DATABASE
    نوشته شده توسط شفیعی در بخش VB.NET
    پاسخ: 2
    آخرین پست: یک شنبه 18 خرداد 1382, 08:12 صبح
  4. مسیر database
    نوشته شده توسط ario در بخش VB.NET
    پاسخ: 3
    آخرین پست: شنبه 03 خرداد 1382, 09:05 صبح
  5. database (sql) and progress bar؟
    نوشته شده توسط khafanovich در بخش بانک های اطلاعاتی در Delphi
    پاسخ: 1
    آخرین پست: شنبه 30 فروردین 1382, 19:19 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •