PDA

View Full Version : Sql Notification و سمپل استاد ثباتی



yavari
چهارشنبه 24 مرداد 1386, 17:37 عصر
با سلام خدمت جناب آقای ثباتی و سایر دوستان

این سوالم برمیگرده به سمینار استاد ثباتی در یزد ، ممنون میشم پاسخگو باشید .

در مورد Sql Notification سوال داشتم من همان برنامه شما رو که Query Notification نام داشت اجرا کردم اما با یک DataBase جدید واتفاقی که افتاد این بود که Event Change یک سره اتفاق می افتاد و در عرض چند ثانیه تعداد تغیرات در Data Base به 200 تا می رسید میخواستم ببینم مشکل از کجاست.
وسوال دیگه اینکه می خواستم ببینم از این روش در WebApllicatin هم می توان استفاده کرد یعنی اگر محتویات DataBase تغییر کرد صفحه خود به خود Refresh شود و مقدار جدید DataBase را نشان دهد.

با تشکر

yavari
پنج شنبه 25 مرداد 1386, 08:24 صبح
سلام

اینم سمپل ، ممنون میشم اگه سایر دوستان هم کمک کنن !

با تشکر

AminSobati
پنج شنبه 25 مرداد 1386, 17:58 عصر
آقای یاوری عزیز لطفا "عینا" کدی رو که خودتون نوشتین پست کنین.
برای Web App اینها رو ببینید:
http://www.simple-talk.com/sql/sql-server-2005/using-and-monitoring-sql-2005-query-notification/

http://blogs.msdn.com/rushidesai/archive/2005/03/19/746808.aspx

yavari
شنبه 27 مرداد 1386, 12:50 عصر
سلام

ممنون از سمپلتون ، اما متاسفانه متوجه منظورتون نشدم !
در ضمن همچنان مشکل قبلی رو دارم !

ممنون میشم راهنمائی کنید .

asilverisis
شنبه 27 مرداد 1386, 12:53 عصر
سلام
با تشکر
من هم دقیقا به مشکل( yavari ) برخوردم، یعنی MychangeEvent مثل یک حلقه بی نهایت اجرا می شد. البته برنامه با دیتابیس خودش مشکلی نداره، با دیتابیس من جواب نمی ده.
هیچ تغییری در کد ندادم کاملا کپی کردم فقط ConnectionString و نام storedprocedure رو عوض کردم.
ممنون.

hm1984ir
شنبه 27 مرداد 1386, 12:54 عصر
آقای ثباتی ممنون می شوم که سوال یاوری رو جواب بدید چون مشکل ایشون مشکل من هم هست.
متشکرم.

hm1984ir
شنبه 27 مرداد 1386, 18:08 عصر
با سلام خدمت آقای ثباتی
اگر مثال های آقای یاوری را دیده باشید حتما متوجه این موضوع شده اید که هر دو این برنامه ها داخل Loop می افتد یعنی onChangeEvent یک سره اجرا می شود من حدس می زنم که مشکل از روش ساخت DataBase باشه اگر ممکنه نحوه ساخت DataBase با قابلیت SqlNotification را به طور کامل برای م شرح دهید
متشکرم.

AminSobati
شنبه 27 مرداد 1386, 20:44 عصر
از * SELECT استفاده نکنید، حتما فیلدها رو نام ببرید. همچنین جدول رو با نام Schema (مثلا dbo) قید کنید. اگر هنوز مشکلی باقیه اطلاع بدین لطفا...

hm1984ir
یک شنبه 28 مرداد 1386, 08:49 صبح
با سلام خدمت آقای ثباتی
می خواستم از شما تشکر کنم چون مشکل دقیقا همین بود که گفتید با گذاشتن یک dbo تمام مشکلات بر طرف شد .
خیلی ممنون از اینکه پیگیری می کنید .
حمید مقدم

hm1984ir
یک شنبه 28 مرداد 1386, 11:42 صبح
سلام به همه دوستان مخصوصا مدیر سایت آقای ثباتی عزیز
می خواستم ببینم از خاصیت SqlNotification می توان در Web هم استفاده کرد به این صورت که اگر محتوای DataBase تغییر کرد مثلا صفحه از سایت که شامل GridView است به یک باره Refresh شده و GridView مقدار جدید را به خود بگیرد.
البته من به کمک شما یک WebApplication با بهره گیری از SqlDependency نوشتم که این کار را می کرد ولی OnChangEvent وقتی اجرا می شد که صفحه فعلی ما PostBack شود و عمل Refreshing صفحه به صورت خود کار انجام نمی شد بنابراین من مجبور شدم با استفاده از AtlasTimer وجود تغییر را چک کنم اگر تغیر انجام شده بود صفحه را Refresh کنم اگر خواسته باشید می توانم کدش رو براتون بگذارم.
البته من استفاده از Atla Timer را نمی پسندم می خواستم ببینم روشی وجود ندارد که عمل Refreshing با توجه به OnChangeEvent خود به خود انجام پزیرد .
باز هم از شما متشکرم .
حمید مقدم.

AminSobati
یک شنبه 28 مرداد 1386, 12:24 عصر
حمید جان من برای Web App تا به حال Query Notification انجام ندادم، ولی در پست سوم یک Sample و چند لینک گذاشتم. اگر اینها هم PostBack میکنند که من راه حلی براش ندارم

hm1984ir
یک شنبه 28 مرداد 1386, 12:32 عصر
خیلی ممنون
اگر خودم به نتیجه ای رسیدم حتما در همین تاپیک مطرح می کنم.

mhadvi_mahmaood
یک شنبه 28 مرداد 1386, 16:31 عصر
تو وب دیگه اینجوری نیست. تو وب میشه Caching. باعث میشه سرعت بالایی تو لود مجدد صفحه داشته باشه. اگر از profiler استفاده کنید متوجه خواهید شد که درست میگم.
به این کدی که میذارم توجه کن.

hm1984ir
دوشنبه 29 مرداد 1386, 12:48 عصر
محمد جان از راهنمایت خیلی ممنونم ولی تو WebApplication هم می توان از SqlDependency استفاده کرد
در رابطه با SqlCacheDependency باید بگم که یک نوع Cache که از خاصیت SqlNotification برای بالا بردن Performance کار استفاده میکنه!!!

asilverisis
سه شنبه 30 مرداد 1386, 01:06 صبح
از * SELECT استفاده نکنید، حتما فیلدها رو نام ببرید. همچنین جدول رو با نام Schema (مثلا dbo) قید کنید. اگر هنوز مشکلی باقیه با تشکرطلاع بدین لطفا...

سلام
با تشکر فراوان از جناب ثباتی
با همون dbo قبل ار اسم table درست شد ولی علاوه بر اون نباید اسم دیتابیس هم قبلش بیاد چون خود Sql Server 2005 به این صورت می نویسه :


[Database Name].[dbo].[Table Name]

فقط باید به این شکل باشه :


[dbo].[Table Name]


موفق و موید.

asilverisis
دوشنبه 05 شهریور 1386, 17:58 عصر
سلام
من از کدی که در همین تاپیک گذاشته شده بود استفاده کردم و کاملا جواب گرفتم ولی حالا من فرمی دارم که نیاز ندارم هیچگونه Load اطلاعات توی اون صورت بگیره، فقط باید از تغییرات دیتابیس مطلع بشه و پیغام بده و در صورت نیاز کاربر فرمی باز بشه که اطلاعات مورد نظر رو load کنه.
حالا من دقیقا از همون کد فقط قسمت load یا Fill رو حذف کردم ولی جواب نمی ده و MychangeEvent اجرا نمیشه.
مشکل دومی که با گذاشتن یک Msgbox متوجه شدم اینه که به ازای هر تغییر 2 بار رویداد MychangeEvent رخ میده و اجرا میشه.
با تشکر

این هم کدی که من استفاده می کنم:

asilverisis
پنج شنبه 08 شهریور 1386, 12:39 عصر
سلام
یعنی واقعا نمی شه بدون load کردن اطلاعات متوجه تغییرات شد؟؟؟؟؟

asilverisis
شنبه 17 شهریور 1386, 18:14 عصر
سلام
از اساتید خواهش می کنم راه حلی برای این مشکل ارائه بدن، فکرش رو بکنید اگر فقط 500 client در لحظه ای که متوجه تغییر ات می شن بخوان اطلاعات رو load کنن چه اتفاقی می افته؟؟؟
با تشکر.