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

الصلاحيات و المستخدمين في برنامجك

رائج
بدأه nasser50001 في 3 يوليو 2005 · 221 رد · 74,376 مشاهدة · في قسم الدروس والمواضيع الهامة
مشاركة: واتساب X فيسبوك تيليجرام
#126

إدارة الصلاحيات باستخدام الكائن SQLDMO ( الدرس الأخير )

بالنسبة لعملية الصلاحيات على قاعدة البيانات هناك ثلاث حالات للصلاحيات ولكل عملية من هذه العمليات الثلاث لها جملة برمجية تستخدم مع الكائن SQLMDO

1 – منح الصلاحيات ونستخدم لها جملة GRANT

2 – منع الصلاحيات ونستخدم لها جملة DENY

3 – إلغاء الصلاحيات ونستخدم لها جملة REVOK

وسواء عملية المنح أو المنع أو الإلغاء فإن الصلاحيات المتاحة للمستخدم تشمل التالي

1 – العرض ويطلق علية SELECT

2 – الإضافة ويطلق علية INSERT

3 - التعديل ويطلق عليه UPDATE

4 – الحذف ويطلق عليه DELETE

5 - التشغيل ويطلق EXECUTE وهذا فقط للإجراءات المخزنة

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

النقطة الأولى : عند منح الصلاحيات لا يتم إعطاء صلاحيات الإضافة أو التعديل أو الحذف إلا إذا كان للمستخدم صلاحية العرض مع العلم أن داخل SQL SERVER يمكنك منح الصلاحيات التي تريدها دون ارتباط

النقطة الثانية : الفرق بين العلامات الصغيرة والكبيرة داخل SQL SERVER عند إعطاء أو منع الصلاحيات تجد علامة صح خضراء اللون كبيرة وتجد علامة صح خضراء اللون صغيرة وكذلك علامة المنع علامة اكس حمراء اللون صغيرة وكبيرة وعند عمل البرنامج وإعطاء الصلاحيات لا توجد قاعدة معينة لظهور هذه العلامات فمرة تظهر مع الإضافة ومرة لا تظهر وهكذا ......

أولا : منح الصلاحيات باستخدام جملة GRANT

الصورة العامة للجملة كالتالي

object.Grant( Privilege , GranteeNames , [ ColumnNames ] , [ GrantGrant ] , [ AsRole ] )

وهذه الجملة لها خمس بارامترات

1 – Privilege : وهي نوع الصلاحيات الذي سيعطى للمستخدم وهي تظهر في قائمة بمجرد أخذ مسافة مثل

SQLDMOPriv_Select الإضافة

SQLDMOPriv_Delete الحذف

SQLDMOPriv_Update التعديل .... الخ

2 – GranteeNames : وهو اسم المستخدم المراد منح الصلاحيات له

3 – ColumnNames : اسم الحقل المراد منح الصلاحيات له والمناسبة الصلاحيات تمنح على مستوى الجدول حتى رغم تحديد اسم الحقل

4 – GrantGrant : وهي تحدد أن المستخدم الممنوح الصلاحيات يمكنه منح هذه الصلاحيات لمستخدمين آخرين أو لا يمكنه وهي تأخذ قيمة TRUE أو FALSE

5 – AsRole : لا أعرف فائدتها بالضبط ولكن عند استخدام القيمة TRUE أو FALSE لا أجد تغيير كبير وهذه أحد النقاط التي تحتاج الى تدخل خبراء SQL SERVER

مثال لإستخدام الجملة

If Check1.Value = 1 Then
ptprivilege = SQLDMOPriv_Select
SQLtab.Grant ptprivilege, List4.Text, List3.Text, True, False
End If
حيث list4 تعرض أسماء المستخدمين & list3 تعرض أسماء الحقول

وإذا كنت تستخدم OLEDB يمكنك استخدم جملة GRANT كالتالي

Cn.Execute "USE database_name"
Cn.Execute "grant SELECT ,  UPDATE ,  INSERT ,   DELETE  ON [dbo].[table_name]  TO [user_name]"

حيث يمكنك اختيار بعض الصلاحيات فقط لمنحها للمستخدم

ثانيا : منع الصلاحيات باستخدام جملة DENY

الصورة العامة للجملة كالتالي

object.Deny( Privilege , GranteeNames , [ ColumnNames ] , [ GrantGrant ] )

وهذه الجملة لها أربع بارامترات

1 – Privilege : وهي نوع الصلاحيات الذي سيمنع المستخدم منها وهي تظهر في قائمة بمجرد أخذ مسافة مثل

SQLDMOPriv_Select الإضافة

SQLDMOPriv_Delete الحذف

SQLDMOPriv_Update التعديل .... الخ

2 – GranteeNames : وهو اسم المستخدم المراد منع الصلاحيات منه

3 – ColumnNames : اسم الحقل المراد منع الصلاحيات عليه وبالمناسبة الصلاحيات تمنع على مستوى الجدول حتى رغم تحديد اسم الحقل

4 – GrantGrant : وهي تحدد أن المستخدم الممنوح الصلاحيات يمكنه منح هذه الصلاحيات لمستخدمين آخرين أو لا يمكنه وهي تأخذ قيمة TRUE أو FALSE

مثال لإستخدام الجملة

If Check1.Value = 1 Then
ptprivilege = SQLDMOPriv_Select
SQLtab.Deny  ptprivilege, List4.Text, List3.Text, True 
End If حيث list4  تعرض أسماء المستخدمين & list3  تعرض أسماء الحقول

بنفس طريقة منح الصلاحيات التي شرحناها في الأعلى إذا كنت تستخدم الكائن OLEDB يمكنك منع الصلاحيات باستبدال جملة GRANT بجملة DENY

ثالثا : إلغاء الصلاحيات باستخدام جملة REVOK

الصورة العامة للجملة كالتالي

object.Revoke( Privilege , GranteeNames , [ ColumnNames ] , [ GrantGrant ] , [ RevokeGrantOption ] , [ AsRole ] )

وهذه الجملة لها خمس بارامترات هي نفسها بارامترات جملة GRANT

مثال لاستخدام الجملة

If Check1.Value = 1 Then
ptprivilege = SQLDMOPriv_Select
SQLtab.Revok  ptprivilege, List4.Text, List3.Text, True 
End If 
حيث list4  تعرض أسماء المستخدمين & list3  تعرض أسماء الحقول

وهكذا نكون قد أنهينا هذه السلسة من الدروس عن المستخدمين والصلاحيات اسأل الله العلي القدير أن تكون قد حازت على رضاكم وأن تكون قدمت لكم بعض المعلومات

ومرفق مثال شامل عن جميع العمليات التي وعدتكم بها من خلال الكائن SQLDMO وهو مثال رائع جدا

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

وإن شاء الله سيتم تجميع هذه المادة في كتاب PDF حتى تكون مادة مجمعة للجميع وكذلك سيتم وضعها في عرض Power Point

والى اللقاء في دروس أخرى بإذن الله

مع تحيات Nasser50001 ( ناصر ) وبنت اليمن

الفريق العربي للبرمجة

تم تعديل هذه المشاركة بواسطة nasser50001 في 21 سبتمبر 2005 في 00:05

#127

شكرا للأخوة الكرام على المرور والتعليق

معلش امكانية وضع الملفات مش متاح هنا ليه .... ما أدري

سأضع المثال في مشاركة مستقلة إن شاء الله

تحياتي لكم

اخوكم ناصر

#128

فعلا امكانية المرفقات في هذا القسم فقط للمشرفين يا اخ ناصر

:)

تم تعديل هذه المشاركة بواسطة إبراهيم الطيب في 21 سبتمبر 2005 في 00:36

gaza3-3.jpg
#129

لأن امكانية اضافة ملفات لقسم الدروس فلم استطع وضع الملف هناك وها هو الملف تكلمة للدرس الأخير من سلسلة دروس " الصلاحيات والمستخدمين "

تحياتي لكم

اخوكم ناصر

sql server all.rar

#130

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

مشكور اخى ناصر على الدرس وجعله الله فى ميزان حسناتك

مع خالص تحياتى...

;) ;) :rolleyes:

#131

بسم الله الرحمن الرحيم

شكرا على الدرس نرجو من المشرف وضعه فى قسم الدروس

#132

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

شكراً اخ ناصر على الدروس القيمة

اقتباس
نرجو من المشرف وضعه فى قسم الدروس

عندما يوافق صاحب الموضوع :rolleyes:

إن قلت قال الله قال رسولـه همزوك همز المنكر المتعالي
أو قلت قد قال الصحابة والألـى تبعاً لهم بالقول والأعمال
أو قلت قـال الشافعي وأحمد و أبو حنيفة والإمام الغالي
صدوا عن وحي الإله ودينـه واحتالوا على حرام الله بالإحلال
يا أمةً لعبت بدين نبيها كتلاعب الصبيان في الأوحال
حاشا رسول الله يحكم بالهوى تلك إذاً حكومة الضلال

feed.1.gif

#133

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

شكرا للأخوة الكرام

اخ محمد لو يتم نقلة في آخر درس أو وضع هذه المشاركة ودمجها مع الدروس يكون أفضل حتى يكون الموضوع متكامل

شكرا مقدما

تحياتي لكم

اخوكم ناصر

#134

تسلم

#135

تم دمج الموضوع كما طلبت اخى الحبيب ناصر :rolleyes:

إن قلت قال الله قال رسولـه همزوك همز المنكر المتعالي
أو قلت قد قال الصحابة والألـى تبعاً لهم بالقول والأعمال
أو قلت قـال الشافعي وأحمد و أبو حنيفة والإمام الغالي
صدوا عن وحي الإله ودينـه واحتالوا على حرام الله بالإحلال
يا أمةً لعبت بدين نبيها كتلاعب الصبيان في الأوحال
حاشا رسول الله يحكم بالهوى تلك إذاً حكومة الضلال

feed.1.gif

#136

السلام عليكم

الاخ ناصر والاخت بنت اليمن

الف مبروك على انتهاء هذه الدروس الرائعة وبارك الله فيكما وجعلها فى ميزان حسناتكما,,,

Hany Saad Mostafa

ITI (Information Technology Institute) l

SD Dept.-Teaching Assistant

---

اسألكم الدعاء بظهر الغيب

#137

مشكوووور أخوي محمد على نقل الموضوع .... شكرا جزيلا

مرحبا اخي هاني ... وحشتني والله .. ومشكور على الرد والتعليق والمرور

واعتذر عن قلة المشاركة هذه الأيام

تحياتي للجميع

اخوكم ناصر

#138

اشكركم جميعاً ، و لا زال هناك شيء اخير قادم لكم في الطريق .. :)

بنت اليمن ،،

لا اله الا الله .. محمد رسول الله

(* ربِ اجعلني مقيم الصلاة و من ذريتي ، ربنا و تقبل دعـاء *)

يا حيّ يا قيـوم ... برحمتك استغيث ... اصلح لي شأني كله و لا تكلني الى نفسي طرفة عين

#139

السلام عليكم

الاخ ناصر

اقتباس
مرحبا اخي هاني ... وحشتني والله .. ومشكور على الرد والتعليق والمرور

والله اخى ناصر انت وحشتنى اكثر

بارك الله فيك واعانك على مشاغلك

الاخت بنت اليمن

اقتباس
اشكركم جميعاً ، و لا زال هناك شيء اخير قادم لكم في الطريق

احنا اللى بنشكرك قوى :D و فى انتظار الشىء القادم فى الطريق بفارغ الصبر

ربنا يوصله بالسلامة :rolleyes:

Hany Saad Mostafa

ITI (Information Technology Institute) l

SD Dept.-Teaching Assistant

---

اسألكم الدعاء بظهر الغيب

#140

ارجوك يااخى بسرعة

الناس انواع

رجل يعلم ويعلم انه يعلم فهذا عالم فوقروه

رجل يعلم ولا يعلم انه يعلم فهذا غافل فإيقزوه

رجل لا يعلم ويعلم انه لا يعلم فهذا جاهل فعلموه

رجل لا يعلم ولا يعلم انه يعلم فهذا احمق فابتعدو عنه

#141

أخي nasser50001

أرجو وضع مثال على الطريقة الأولى ولك جزيل الشكر والامتنان

#142

اي طريقة اختي دينا تقصدين ؟؟

وضعنا أمثلة على الصلاحيات من داخل الفيجوال والصلاحيات باستخدام sql

ارجو التوضيح

#143

والله انتم ابدعتم

ولكن لي سؤال بسيط

هل يمكن ان تعمل sqlserver 2000 مع ويندوز 98 أو ملينيوم؟

#144

الأخ ناصر

عذرا لأنني لم انتبه للمثال الخاص بالفيجوال بيسك وهو ماكنت أسأل عنه، لدي استفسار بسيط ولكن أصابني بعقده :s :s :angry: :blink:

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

Run time error 3265

Item cannot be found in the collection corresponding to the requested name or ordinal

ويقوم بتحديد الخطأ على إحدى الصلاحيات علماً بأنني غيرت اسمها اكثر من مرة ، الا أن رسالة الخطأ لازالت تظهر مع التشغيل ثم قمت بحذفها لأرى ماذا سيحصل فوجدت أن رسالة الخطأ أصبحت عند الصلاحية التي تليها ( وذلك في كود الإجراء الخاص بالتحقق من الصلاحيات perm )

هل ذلك بسبب كثرة الصلاحيات أم ماذا ؟؟؟؟؟؟؟؟؟ :blink: :blink:

أرجو المساعده العاجلة وجزيت خيرا.

#145

معلش اختي يمكنك فقط ادراج المثال حتى اعد لك عليه

تحياتي

#146

أخي yasserstars

sql server هو برنامج خادم يعمل بصورة جيدة على اي نظام تشغيل خادم مثل win server 2003 بحيث تستطيع استخدام كل امكانيات البرنامج وأدواته الرائعة

#147

أخي nasser50001

لايمكنني وضع ملفات مرفقة في قسم الدروس ، كيف أرسل المثال؟

#148

ارسلي المثال على الميل الموجود بالتوقيع

تحياتي

#149

تم الارسال

#150

أخي nasser حقا انت ابدعت في هذا الموضوع و أرجو ان تفيدني في هذا الموضوع أكثر وأكثر فهذا الموضوع مهم جدا بالنسبة لي واعتقد انه مهم لكل المبرمجين

فنحن نعرف كلنا أن قواعد البيانات هي جزء اساسي من البرامج التجارية

ولي عدة اسئلة

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

السؤال الثاني

اذا اردت عمل برنامج تجاري بالفيجول يعتمد علي قواعد البيانات sql لشركة مثلا لها أكثر من فرع

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

اسف اخي علي الاطالة ولكن الموضوع مهم جدا واعرف انه موضوع مرتبط بال sql والشبكات ولكنه في الاخر موضوع برمجة

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…