الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كيفية إرسال رسائل للبرامج مع SQL Server

مغلق
بدأه jooorj في 5 ديسمبر 2006 · 21 رد · 1,977 مشاهدة · في قواعد بيانات Microsoft SQL Server
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

أثناء إطلاعي على مشاريع من شركات أجنبية وجدت أن البرنامج المربوط بال SQL SERVER يتلقى رسائل وأوامر من مدير النظام مثل :

رسائل مثل :-----------------------------------------------------------

1- الرجاء إنهاء البرنامج فورا .

2- الرجاء طباعة تقرير للمستهلكين من تاريخ --/--/------ وحتى تاريخ --/--/----

3- الرجاء الدخول من جديد خلال دقيقة.

4- يمكنك الان استخدام خاصية البحث (حيث أنها أصبحت فعالة لك).

أوامر مثل :--------------------------------------------------------

1- إيقاف البرنامج.

2-تفعيل خواص وازرار معينة وبشكل مباشر.

3-تكبير خطوط تصغيرها وأشياء أخرى تجميلية.

4- إرسال إشارة تنبيه وجرس مع رسالة نصية.

-------------- وهكذا أمور تخص البرنامج وطبيعة المستخدم --------------

فالرجاء من الأخوة افادتي بكيفية عمل مثل هذه الأشياء ولو بشكل مبسط.

للعلم لا أظن أن البرامج تستخدم Socket لان ال Firewall لن يسمح لها الا بعد عمليات معقدة كاضافة البورتات وما الى ذلك...

بانتظار ردودكم وشكرااا.

موقوف من المشاركة لقلة الأدب

============================

#2

هل من ردرو دو شكرا ........!

موقوف من المشاركة لقلة الأدب

============================

#3

لا علاقة ل SQL Server بالموضوع فهو غير قادر على فعل ما تقوله, الامر له علاقة بالبرنامج و كما قلت انت

اقتباس
للعلم لا أظن أن البرامج تستخدم Socket لان ال Firewall لن يسمح لها الا بعد عمليات معقدة كاضافة البورتات وما الى ذلك...

الامر يتم هكذا :)

رب اجعلني مقيم الصلاة ومن ذريتي ربنا وتقبل دعاء.

لا تنسى: "العقل مثل العضلة كلما استخدمته أكثر كلما ازدادت قوته"

#4

توجد طريقتين لتنفيذ ما ذكرت:

1- تضمين command parser في البرنامج بحيث يستطيع تفسير صيغ أوامر محددة يتلقاها من مدير النظام.

2- استخدام خدمة SQL Mail وهذه بعض التفاصيل عن إعداداتها ، وهذه أعقد قليلاً لأنه سيرسل الأوامر على شكل جمل SQL

فكر بطريقة أخرى

#5

مشكورين على الاجابة

اقتباس
1- تضمين command parser في البرنامج بحيث يستطيع تفسير صيغ أوامر محددة يتلقاها من مدير النظام.

كيف يتلقا بدون استخدام ال Socket؟

بانتظار الردود

موقوف من المشاركة لقلة الأدب

============================

#6

من الممكن ان تكون هناك طريقة أبسط بكثير

جدول في قاعدة البيانات للرسائل وما الى ذلك ويقوم التطبيق بالقراءة من هذا الجدول عن طريق timer كل فترة قصيرة ولتكن ثانية و عن طريق قراءة هذا الجدول يقوم بتطبيق الاشياء السابق ذكرها

When all else fails, read the instructions.

If there is a possibility of several things going wrong the one that will cause the most damage will be the one to go wrong.

No Matter how many times you repeat, there will be someone not listening .

To beat the bureaucracy, make your problem their problem

55926083.png

#7
اقتباس
من الممكن ان تكون هناك طريقة أبسط بكثير

جدول في قاعدة البيانات للرسائل وما الى ذلك ويقوم التطبيق بالقراءة من هذا الجدول عن طريق timer كل فترة قصيرة ولتكن ثانية و عن طريق قراءة هذا الجدول يقوم بتطبيق الاشياء السابق ذكرها

عملية استخدام ال Timer للأسف عملية غير جيدة لما فيها من تحميل زائد واستخدام للأحداث بدون فائدة ولا تستخدم في مثل هذه الامور لأنها تجعل البرنامج يتصل كل دقيقة بالداتا بيس مثلا وهذا غير مفيد لا بل ليس احترافا..

أظن أن هناك أشياء أكثر إحترافا مثل ما في الجافا كال CORBA - RMI : حيث سبق لي أن عملت بهما وهي تقابل RPC Call بال C++ ولا أعرف المقابل لها بال C# عموما الافضل لو كان ال SQL Server يدعم أمور حيث أنه يستخدم بورت Port وعليه فإنه من المنطقي أن يستخدم أمور وأوامر عن طريق هذا المنفذ...

شكرا للجميع وبانتظار المزيد :)

تم تعديل هذه المشاركة بواسطة jooorj في 6 ديسمبر 2006 في 15:31

موقوف من المشاركة لقلة الأدب

============================

#8

لم أقل انها افضل طريقة ولكن اذا كان الـ firewall مغلق لكل المنافذ هذه الطريقة ستكون جيدة وقد قمت بتجربتها في تطبيقات بالغة التعقيد خاصة بشبكات المحمول واثبتت نجاح

هذه الطريقة تستخدمها بعض الشركات المزودة للـ Middleware مثل Tibco , Webmethods بالاضافة الى الطرق الآخرى كمنافذ TCP/IP and Webservices وتصلح هذه الطريقة في الـ Legacy applications وعندما لا توجد طريقة اخرى للـ Integration

When all else fails, read the instructions.

If there is a possibility of several things going wrong the one that will cause the most damage will be the one to go wrong.

No Matter how many times you repeat, there will be someone not listening .

To beat the bureaucracy, make your problem their problem

55926083.png

#9

لا والله لا يمكن أن تكون طريقة أساسا مثل هذه الامور يجب أن تم بشئ مرن ومنطقي أما كما تفضلت أخي بخصوص استخدامها لدى بعض الشركات فلعل تلك الشركات تستخدم أمور ليست لارسال رسائل للمستخدمين عبر شبكة الاتصال بخصوص برامج ربما أشياء مثل تحديث تحديد الموقع أو كما في ال DHCP يعني ليست الاستخدام المطلوب للتعامل مع قواعد البيانات وبرامج إدخال تلك البيانات فالموضوع مختلف شيئا ما ؟

موقوف من المشاركة لقلة الأدب

============================

#10

السلام عليكم ورحمة الله وبركاته :

والله يا أحبة اليوم بالذات كنت أقوم بالإطلاع على موضوع جميل جداً وله وصلة مباشرة أو غير مباشرة بالسؤال المطروح ..

فبينما كنت أقرأ عن دعم الـ Sql Server 2005 لبيئة التطوير Dot Net و الـ CLR تحديداً ..

وجدت أشياء جميلة جداً بينها إمكانية تضمين مكتبات Dot Net تنشئها على مزاجك و تضمنها إلى قاعدة البيانات الخاصة بك ..

ثم تستدعي الإجرائيات المكتوبة بالـ Dot Net الموجودة داخل هذه المكتبات من داخل إجرائياتك المخزنة ..

يعني Dot Net & T-SQL و يا سلام عالحلاوة :D

طبعاً هذا لا يكون بالبساطة اللتي أتكلم بها .. بل هناك خطوات لا بأس بها .. عليك أن تقوم بها لفعل ذلك ..

...

سيقول لي أحد ما " يعني إلى أين تأخذنا يا سيد ( عماد ) ؟ "

سأقول له و لللإخوة إلى أين :

الآن يمكنك أن تنشئ job و تستعمل هذه الإجرائيات الموجودة في مكتبات الـ Dot Net التي أنشأتها وضمنتها في قاعدة بياناتك ..

لإرسال رسائل تحذيرية مثلاً أو لفعل أشياء كثيرة و متنوعة في النظام و التي لا تقدر T-SQL فعلها ..

كنت سأطرح مثالاً حول ذلك لكن عليّ أن أذهب لأمر طارئ .. على أن أذكر مثالاً قرأته في وقت قريب إن شاء الله و توفر الوقت الكافي ..

والسلام عليكم :)

دروس و كتب مفيدة----------------------كتيب الإجرائيات المخزنةتعرف على اللغة Transact SQL <<-->> كتيب عن تنصيب قواعد البيانات Sql Server باللغة العربية كتيب عن إنشاء قواعد البيانات في SQL Server باللغة العربية <<-->> درس مع الأمثلة عن المؤشرات و التعامل معها في الـ T-SQLالعبارات الشرطية و الحلقات في T-SQL <<-->> شرح لبعض الـ Extended Stored Procedure استخدام مكتبات الـ Dot Net الخاصة بك في الـ Sql Server 2005 <<-->> التعامل مع المصفوفات من خلال الـ T-SQLتعابير الجداول الشائعة في SQL Server 2005 <<-->>الاتصال بالأداة SQL Server Management Studioحلول سريعة و لمحات برمجية --------------------------------التصدير إلى إكسل : طريقة أولى : طريقة بسطر واحد من الكود <<-->> طريقة ثانية : طريقة تحتاج إنشاء إجرائية مخزنةً تجهيز بيانات جدول بالصيغة XML تمهيداً لحفظها كملف <<-->> تصدير البيانات إلى ملفات نصية برمجياً إغلاق جميع الإتصالات المفتوحة بقاعدة بيانات محددة .. تمهيداً لاسترجاعها أو حذفها <<-->> الاستعلام بناء على وقت مخزن بالصيغة العربية ضمن حقل نصي ..حذف السجلات المتكررة و إبقاء عدد محدد منها في جدول.. <<-->> أسرع طريقة لحذف سجلات جدول كيف احصل على اسم جهازي والباسوورد باستخدام T-SQL <<-->> حشر أنواع الصور المختلفة في حقل من نوع Image باستخدام إجرائية مخزنة .كيف تعرف أنواع الصور المخزنة في حقل من نوع Image .. <<-->> إجرائيات مخزنة ببارامترات ديناميكية مفيدة جداً للاستعلامات استخدام رقم الحقل بدلاً من الإسم في عبارات الإستعلام <<-->> من هو أضخم الجداول في قاعدة بياناتي ؟معرفة زمن تنفيذ الإجرائيات ( لتختار الطريقة الأسرع بين إجرائياتك المخزنة ) <<-->> التعامل مع الـ Rules برمجياً الحصول على آخر صف في الجدول <<-->> قراءة ملفات XML باستخدام T-SQL برمجياً (مثال مرفق)سحب بيانات ملف إكسل إلى الـ SQL Server <<-->> تشفير النسخة الاحتياطية بكلمة مرور <<-->> التخلص من البيانات المكررة <<-->> حل مشكلة التاريخ الهجريDifferential Backup بالتعريف---------- لا إله إلا الله .. محمد رسول الله

أخوكم في الله..  Imad Ozone

#11

أين الرابط أين اختفى الاخ الذي وعدنا بالافادة :(

موقوف من المشاركة لقلة الأدب

============================

#12

لماذا نعنبر طريقة القراءة باستخدام تايمر غير فعالة؟

هل تعلم كيف يعمل Sql Server Agent

جرب تشغيل برنامج SQL server Profiler ويكون السيرفيس الخاصة بـ Agent فعاله

سوف تجد هذه الجمله تتكرر كل 20 ثانية

SELECT N'Testing Connection...'

كما انه يقوم بتنفيذ stored procedure مع كل 20 ثانية

EXECUTE msdb.dbo.sp_sqlagent_get_perf_counters

When all else fails, read the instructions.

If there is a possibility of several things going wrong the one that will cause the most damage will be the one to go wrong.

No Matter how many times you repeat, there will be someone not listening .

To beat the bureaucracy, make your problem their problem

55926083.png

#13

السلام عليكم ورحمة الله وبركاته :

يا أخي أنا لم أختفي و لم أهرب من العدالة بعد .. قأنا لم أحدد موعداً :

اقتباس
على أن أذكر مثالاً قرأته في وقت قريب إن شاء الله و توفر الوقت الكافي ..

سأطرح المثال قريباً جداً بإذن الله ... لكن عليك بالصبر ..

فنحن جميعاً عندنا أعمال أخرى .. على كل ولا يهمك فقط إصبر قليلاً ..

المثال جاهز لكنه ليس معي الآن ;)

تم تعديل هذه المشاركة بواسطة imadouzoun في 10 ديسمبر 2006 في 20:42

دروس و كتب مفيدة----------------------كتيب الإجرائيات المخزنةتعرف على اللغة Transact SQL <<-->> كتيب عن تنصيب قواعد البيانات Sql Server باللغة العربية كتيب عن إنشاء قواعد البيانات في SQL Server باللغة العربية <<-->> درس مع الأمثلة عن المؤشرات و التعامل معها في الـ T-SQLالعبارات الشرطية و الحلقات في T-SQL <<-->> شرح لبعض الـ Extended Stored Procedure استخدام مكتبات الـ Dot Net الخاصة بك في الـ Sql Server 2005 <<-->> التعامل مع المصفوفات من خلال الـ T-SQLتعابير الجداول الشائعة في SQL Server 2005 <<-->>الاتصال بالأداة SQL Server Management Studioحلول سريعة و لمحات برمجية --------------------------------التصدير إلى إكسل : طريقة أولى : طريقة بسطر واحد من الكود <<-->> طريقة ثانية : طريقة تحتاج إنشاء إجرائية مخزنةً تجهيز بيانات جدول بالصيغة XML تمهيداً لحفظها كملف <<-->> تصدير البيانات إلى ملفات نصية برمجياً إغلاق جميع الإتصالات المفتوحة بقاعدة بيانات محددة .. تمهيداً لاسترجاعها أو حذفها <<-->> الاستعلام بناء على وقت مخزن بالصيغة العربية ضمن حقل نصي ..حذف السجلات المتكررة و إبقاء عدد محدد منها في جدول.. <<-->> أسرع طريقة لحذف سجلات جدول كيف احصل على اسم جهازي والباسوورد باستخدام T-SQL <<-->> حشر أنواع الصور المختلفة في حقل من نوع Image باستخدام إجرائية مخزنة .كيف تعرف أنواع الصور المخزنة في حقل من نوع Image .. <<-->> إجرائيات مخزنة ببارامترات ديناميكية مفيدة جداً للاستعلامات استخدام رقم الحقل بدلاً من الإسم في عبارات الإستعلام <<-->> من هو أضخم الجداول في قاعدة بياناتي ؟معرفة زمن تنفيذ الإجرائيات ( لتختار الطريقة الأسرع بين إجرائياتك المخزنة ) <<-->> التعامل مع الـ Rules برمجياً الحصول على آخر صف في الجدول <<-->> قراءة ملفات XML باستخدام T-SQL برمجياً (مثال مرفق)سحب بيانات ملف إكسل إلى الـ SQL Server <<-->> تشفير النسخة الاحتياطية بكلمة مرور <<-->> التخلص من البيانات المكررة <<-->> حل مشكلة التاريخ الهجريDifferential Backup بالتعريف---------- لا إله إلا الله .. محمد رسول الله

أخوكم في الله..  Imad Ozone

#14

:) ماشي

انا صابر وبانتظار الحلول البرمجية منك الله يحفظك بس يايريت ما تطول علينا...

بالنسبة للتايمر يا أخي ما علاقة ال مهام المجدول وبعض الاستخدامات للتايمر بارسال رسائل أفضل مليون مرة أن أستخدم Socket من التايمر لانه ليس مكان استخدامه هنا...

لذلك لكل مقام مقال والتايمر لا يستخدم للتحادث تصور ان المنتدى يستخدم تايمر:) ماذا سيحصل..... ؟؟؟

موقوف من المشاركة لقلة الأدب

============================

#15

أولا كونك تفضل أولا تفضل لا يغير من الأمر شيء

ثانيا انا اضرب لك مثال على تطبيق مشهور يستخدم التايمر فكيف يتم تنفيذ المهام في أوقات معينة ؟

يقوم الـ SQL Server Agent بقراءة الداتابيس بناء على تايمر ويمكن التأكد بتشغيل البروفايلر كما شرحت سابقا

When all else fails, read the instructions.

If there is a possibility of several things going wrong the one that will cause the most damage will be the one to go wrong.

No Matter how many times you repeat, there will be someone not listening .

To beat the bureaucracy, make your problem their problem

55926083.png

#16

لا يا أخي الموضوع يختلف انت هنا بحاجة لقراءة بيانات على نفس الجهاز كل فترة معينة وهذا ئ منفصل عما نسعى له ، يبدو أنك أخي ابتعدت كثيرا...

الموضوع مرة أخرى ارسال رسائل للمستخدمين عبر الشبكة لا يتم بالتايمر اطلاقا وليس منطقيا تصور كما قلتلك سابقا أن هذا المنتدى يعمل تحديث كل فترة زمنية معينة كيف راح يكون الأداء :)

أرجو أن تكون وضحت الفكرة..

موقوف من المشاركة لقلة الأدب

============================

#17

وما المانع

فقط لنعمل عقولنا بعض الشيئ (Think out of the Box)

اذا كنت تريد تصور للرسائل بالمنتدى فليكن

ما المانع من وجود Application server يقوم بالقراءة من قاعدة البيانات عن طريق تايمر ثم يرسل رسائل للمستخدمين عن طريق الـ Sockets

هل لديك أي طريقة لتعرف ان قاعدة البيانات تم ادخال رسالة فيها .

هل عندك طريقة يمكن من خلالها للـ Database engine ان يخاطبك

من الممكن تصور وجود trigger يقوم بانشاء instance of an object عن طريق ال Extended Stored procedures وهذا الـ Object هو الذي سيقوم بمراسله المستخدمين

ولكن هذه تصلح لـ SQL server فقط

اتمنى ألا يكون التشبث بالرأي لمجرد التشبث بالرأي بل يستند الى حقائق وخبرات

شكرا لك على تفهمك وسعة صدرك

When all else fails, read the instructions.

If there is a possibility of several things going wrong the one that will cause the most damage will be the one to go wrong.

No Matter how many times you repeat, there will be someone not listening .

To beat the bureaucracy, make your problem their problem

55926083.png

#18

اخي IUnknown

هل سمعت عن RMI RPC CORBA?

هذه تطبيقات عملية للتعامل مع الشبكة كانها شئ احترافي ارجو ان تتطلع عليهم ففيهم امثلة رائع للتعامل مع الشبكات والانظمة بشئ كبير وكثير من التميز زالروعة

موقوف من المشاركة لقلة الأدب

============================

#19

اعلم تماما ما تريد الحديث عنه ولكننا بصدد التكلم عن database driven events تحدثها عمليات الـ Insert أو الـ Update

أليس كذلك ؟

When all else fails, read the instructions.

If there is a possibility of several things going wrong the one that will cause the most damage will be the one to go wrong.

No Matter how many times you repeat, there will be someone not listening .

To beat the bureaucracy, make your problem their problem

55926083.png

#20

السلام عليكم

أنا بدأت قبل فترة بعمل برنامج فيه نفس المشكلة

بطريقة Client/Server واستخدام الـ Sockets طبعاً

واستعملت في برنامج السيرفر Timer كل 3دقائق يتحقق من بعض الأشياء من قاعدة البيانات ثم يرسلها الى الـ Client المطلوب في حال إتصاله أو يرسلها عندما يتصل

ومع أن الطريقة معقدة نوعا ما لكن ، لاأظن أن هناك طريقة أسهل خصوصا لمعرفة الأجهزة المتصلة وإرسال الرسالة إلى مستخدم معين دون غيره!!!!!!!!

الجديد علي هنا لأن خبرتي قليلة جدا في الـ SQL Server هو:

IUnknown كتب:
من الممكن تصور وجود trigger يقوم بانشاء instance of an object عن طريق ال Extended Stored procedures وهذا الـ Object هو الذي سيقوم بمراسله المستخدمين

ولكن هذه تصلح لـ SQL server فقط

هل ممكن أحد يوضح لي هذه الجزئية أكثر ؟؟؟؟؟؟؟؟؟؟؟

يعني هل أستطيع أن أجعل الـ Trigger يعطي event معين - بهذه الطريقة أو بأخرى - لبرنامج السيرفر لعمل دالة معينة ؟؟؟؟؟ (بحيث نستغني عن التايمر) ؟؟؟؟

ا

#21
اقتباس
اعلم تماما ما تريد الحديث عنه ولكننا بصدد التكلم عن database driven events تحدثها عمليات الـ Insert أو الـ Update

أليس كذلك ؟

اشكرك اولا اخي الفاضل..

لكن انا لا أريد كما تفضلت ، بل أريد مستخدم يرسل لمستخدم عن طريق الشبكة المستخدم فيها SQL Server

موقوف من المشاركة لقلة الأدب

============================

#22

ماذا عن وضع هذه الرسائل في جدول ثم يقوم application server بقراءتها - عن طريق تايمر :) - ومن ثم يرسل هو للمستخدم سواء عم طريق sockets أو غيره

الـشـاهيـن كتب:
السلام عليكم

أنا بدأت قبل فترة بعمل برنامج فيه نفس المشكلة

بطريقة Client/Server واستخدام الـ Sockets طبعاً

واستعملت في برنامج السيرفر Timer كل 3دقائق يتحقق من بعض الأشياء من قاعدة البيانات ثم يرسلها الى الـ Client المطلوب في حال إتصاله أو يرسلها عندما يتصل

ومع أن الطريقة معقدة نوعا ما لكن ، لاأظن أن هناك طريقة أسهل خصوصا لمعرفة الأجهزة المتصلة وإرسال الرسالة إلى مستخدم معين دون غيره!!!!!!!!

الجديد علي هنا لأن خبرتي قليلة جدا في الـ SQL Server هو:

هل ممكن أحد يوضح لي هذه الجزئية أكثر ؟؟؟؟؟؟؟؟؟؟؟

يعني هل أستطيع أن أجعل الـ Trigger يعطي event معين - بهذه الطريقة أو بأخرى - لبرنامج السيرفر لعمل دالة معينة ؟؟؟؟؟ (بحيث نستغني عن التايمر) ؟؟؟؟

ا

من الممكن ان تقوم بعمل Application server في صورة Activex DLL وفي الـ trigger تستخدم sp_OACreate و sp_OAMethod

و sp_OASetProperty و sp_OADestroy

تمكنك هذه الـ Stored procedure من التعامل مع الـ Activex Code components والتي اظن انها من اسهل الطرق لعمل database driven Events

When all else fails, read the instructions.

If there is a possibility of several things going wrong the one that will cause the most damage will be the one to go wrong.

No Matter how many times you repeat, there will be someone not listening .

To beat the bureaucracy, make your problem their problem

55926083.png

هذا الموضوع مغلق.

مواضيع مشابهة