إدارة الصلاحيات باستخدام الكائن 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
سبحان الله MCP,MCSA,MCDBA,MCSE,MCTegyptian in Dammam----------------------------------------------------مواضيعي بالمنتدي أنشأ مشروعك بالفيجوال بيسك 6كتاب أنشأ مشروعك بالفيجوال بيسك كامل pdfكل ما يتعلق بدوال التاريخالمستخدمون والصلاحيات في برنامجك


