PDA

View Full Version : مثالی از query notification



ali_mnkt
جمعه 16 مرداد 1388, 14:00 عصر
سلام به دوستان

من از مفهوم query notification آگاهی دارم فقط در قسمت کد نویسی یکم مشگا دارم . کسی

مثال ساده ای در این زمینه داره اینجت قرار بد ه ؟

m0rteza
شنبه 17 مرداد 1388, 16:36 عصر
من اصلا نمی دونم چیه میشه یک توضیح بدین در بارش

Reza1607
شنبه 11 اردیبهشت 1389, 01:23 صبح
سلام
اگر امکان داره یک مثال همراه با توضیحات بزنید من هم بهش احتیاج دارم

razavi_university
شنبه 11 اردیبهشت 1389, 09:48 صبح
به نقل از وبلاگ بهروز راد:چشمک: (http://brad.barnamenevis.org/?p=23)



استفاده از Query Notification برای آگاهی از تغییرات دیتابیس در سمت کلاینت!



Query Notification قابلیت جدیدی در SQL Server 2005 هست که موجب میشه تا کلاینت ها بتونن از تغییراتی که در داده های برنامه در دیتابیس رخ میده مطلع بشن.
به شکل ساده، دستور SQL ای رو که نیاز داریم معرفی می کنیم و سرویس SQL Broker که در SQL Server وظیفه ی فعال سازی قابلیت های Query Notification رو داره، هر زمان که این دستور SQL بر روی دیتابیس اجرا شد، به کلاینت خبر میده.
سپس در سمت کلاینت تصمیم گرفته میشه که چه رفتاری با این “اعلان” انجام بگیره.

اولین چیزی که نیازه Notification Service هست که جزء سرویس هایی هست که همراه با SQL Server 2005 نصب میشه (اگه نصب نکردید نصبش کنید)
قدم دوم، فعال سازی NET CLR. در SQL Server 2005 هست که در مقاله ی “تعامل SQL Server 2005 و NET.” در همین وبلاگ نحوه ی فعال کردنش رو توضیح دادم که البته دوباره میگم:

EXEC sp_configure ‘clr enabled’ , ‘1′
go
reconfigure;
go

مرحله ی بعد، فعال سازی SQL Broker هست.
SQL Broker رو باید برای هر دیتابیس به شکل مجزا فعال کرد:

ALTER DATABASE myDatabase SET ENABLE_BROKER

آخرین قسمت پیکربندی، اعطای مجوز به کاربر برای استفاده از سرویس QA هست:

GRANT SUBSCRIBE QUERY NOTIFICATIONS TO myUserName

و اما قسمت کدنویسی:
QN در دات نت با استفاده از کلاس SqlDependency در نیم اسپیس System.Data.SqlClient پیاده سازی میشه.
مقداری که سازنده ی این کلاس میپذیره، نام Command ای هست که ایجاد شده:

Dim OBJ_DEPEND As New SqlDependency(myCommand)

در مرحله ی بعد، SqlDependency رو فعال میکنیم تا اصطلاحا یک Listener برای دریافت پیغام از SQL Broker ایجاد کرده باشیم.
این عمل با استفاده از متد Start این کلاس انجام میشه و پارامتری که میپذیره، Connection String ماست:

SqlDependency.Start(ConnectionString)

قسمت اصلی کار اینجاست که به چه شکل باید Notification دریافتی از SQL Broker رو هندل کنیم؟
SqlDependency روالی با نام OnChange داره که یک دلیگیت رو به عنوان روال اجرایی در زمان دریافت Notification اجرا میکنه:
این روال رو به شکل زیر معرفی میکنیم:

AddHandler OBJ_DEPEND.OnChange, AddressOf OnChangeEventHandler(myChangedEvent)

در کد فوق گفته شده که ما روالی با نام myChangedEvent خواهیم داشت که قصد داریم در زمان دریافت Notification اجرا شود.
این روال به شکل ساده میتونه به شکل زیر باشه:

Protected Sub myChangedEvent(sender As Object, e As SqlNotificationEventArgs)
MessageBox.Show(”Be mesle Benzin!”)
End Sub
موفق باشید.

razavi_university
شنبه 11 اردیبهشت 1389, 09:50 صبح
البته اگر کمی سایت رو جستجو کنید مقالات خوبی پیدا می کنید

پیاده سازی Query Notification در ASP.NET (http://barnamenevis.org/forum/showthread.php?t=77847)