كيفية استخدام أدوار التطبيق في مشاريع Access أو SQL Server 2000 Desktop Edition

انتهاء دعم Office 2003

لقد أنهت شركة Microsoft دعم Office 2003 في 8 أبريل، 2014. وقد أثر هذا التغيير على تحديثات البرامج لديك وخيارات الأمان الخاصة بك. تعرف على ما يعنيه ذلك فيما يتعلق بك وكيفية الحفاظ على حمايتك.

هام: تمت ترجمة هذا المقال باستخدام برنامج ترجمة آلية لشركة مايكروسوفت بدلاً من الاستعانة بمترجم بشري. تقدم شركة مايكروسوفت كلاً من المقالات المترجمة بواسطة المترجمين البشر والمقالات المترجمة آليًا وبالتالي ستتمكن من الوصول إلى كل المقالات الموجودة في قاعدة المعرفة الخاصة بنا وباللغة الخاصة بك. بالرغم من ذلك، فإن المقالة المترجمة آليًا لا تكون دقيقة دائمًا وقد تحتوي على أخطاء إملائية أو لغوية أو نحوية، مثل تلك الأخطاء الصادرة عن متحدث أجنبي عندما يتحدث بلغتك. لا تتحمل شركة مايكروسوفت مسئولية عدم الدقة أو الأخطاء أو الضرر الناتج عن أية أخطاء في ترجمة المحتوى أو استخدامه من قبل عملائنا. تعمل شركة مايكروسوفت باستمرار على ترقية برنامج الترجمة الآلية

اضغط هنا لرابط المقالة باللغة الانجليزية308312
متقدمة: يتطلب ترميز الخبير إمكانية التشغيل المتداخل و مهارات متعددة المستخدمين.

يتم تطبيق هذا المقال فقط على مشروع Microsoft Access (.adp).

للحصول على إصدار Microsoft Access 2000 من هذه المقالة، راجع 318816.
الموجز
يشرح هذا المقال القدرات القيود الحلول باستخدام Microsoft SQL Server التطبيق الأدوار في مشروع Microsoft Access (ADP).
معلومات أخرى
في SQL Server، يمكنك إنشاء أدوار قاعدة البيانات من أجل الإدارة أسهل من الأذونات في قاعدة بيانات. بدلاً من منح الأذونات الفردية لكل مستخدم بشكل منفصل, يمكنك تجميع للمستخدمين ذوي الاحتياجات إذن نفس بواسطة إجراء أعضاء دور قاعدة البيانات العادية نفس ثم تعيين الأذونات إلى دور قاعدة البيانات نفسها. ما لم أذونات معينة بشكل صريح مرفوض، مكان آخر سوف عضو المستخدمين الحصول على الأذونات الممنوحة إلى دور قاعدة البيانات تلك.

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

أسلوب واحد غالباً لاستخدام حول هذا لمنح الأذونات الضرورية إلى حساب مستخدم ملقم SQL واحد فقط. قد يكون لدى المستخدمين الفعلي أذونات الاتصال بقاعدة بيانات ولكن لا لعرض أو تعديل أية بيانات. إعادة بعد يتصل مستخدم إلى قاعدة البيانات باستخدام حساب المستخدم الفردية ADP قد ثم برمجياً الاتصال باستخدام بيانات اعتماد حساب المستخدم الذي لدى أذونات. بينما يمكن أن يكون ذلك فعالاً, لا يسمح لك للتمييز بين المستخدمين في قاعدة البيانات أو لتحديد أي مستخدم تنفيذ إجراء معين.

تم تصميم أدوار التطبيق كمحاولة للتغلب على هذا التحديد. لم يكن أدوار التطبيق بعكس أدوار قاعدة بيانات عادية أعضاء نفسها. بدلاً من ذلك، قم بتسجيل الدخول إلى SQL Server المستخدمين ثم الاتصال بقاعدة بيانات باستخدام بيانات الاعتماد الخاصة بهم. عند هذه النقطة سياق الأمان الخاص دور التطبيق ما يمكن تطبيق برمجياً إلى اتصال موجود بواسطة استخدام الإجراء sp_setapprole تخزين. في SQL Server التمييز ما بين بأكثر من المستخدمين الفرديين يتم استمرار بتقسيمها ولكن تقتصر الأذونات المتوفرة ضمن اتصال معينة على أذونات دور التطبيق. الخاص بالمستخدم الفردية أذونات ، ما إذا كان أقل أو أحدث، لا تعتبر.

إنشاء دور تطبيق ما

Microsoft Access المشاريع لا تملك أية أدوات التصميم المرئي لإنشاء كائنات أمان الخادم SQL مثل أدوار التطبيق. توصي Microsoft باستخدام أدوات العميل التي تم تضمينها في الإصدار العادي من SQL Server أو Microsoft Office XP المطور لإنشاء دور التطبيق وتعيينها الأذونات. ومع ذلك، يمكنك لا يزال إنشاء دور التطبيق ثم منحه الأذونات الضرورية برمجياً باستخدام Transact-SQL (T-SQL) من ADP. على الرغم من أن مناقشة كامل من أمان الخادم SQL خارج نطاق هذا المقال، إضافية يمكن العثور على معلومات في كتب SQL Server الفورية إظهار الخطوات التالية كيفية إنشاء دور تطبيق ما برمجياً ثم منح الدور الجديد تحديد الأذونات على جدول:
  1. بدء تشغيل Access.
  2. فتح مشروع Access نموذج Northwind.
  3. في الإطار "قاعدة بيانات" ، انقر فوق وحدات نمطية أسفل كائنات ثم انقر فوق جديد لفتح وحدة نمطية جديدة في بيئة Visual Basic.

    ملاحظة في Access 2007، انقر فوق وحدة نمطية في مجموعة أخرى على علامة التبويب إنشاء.
  4. اكتب أو الصق التعليمة البرمجية التالية داخل الوحدة النمطية جديد:
    Public Function AddNewAppRole(RoleName As String, PW As String) As BooleanOn Error GoTo EH:If CurrentProject.IsConnected ThenDim sTSQL As String    'Create the commandsTSQL = "EXEC sp_addapprole '" & RoleName & "','" & PW & "'"    'Send the commandApplication.CurrentProject.Connection.Execute sTSQLAddNewAppRole = TrueElseAddNewAppRole = FalseEnd IfExit FunctionEH:MsgBox Err.Number & ": " & Err.Description, vbCriticalAddNewAppRole = FalseEnd Function					
  5. حفظ الوحدة النمطية ثم قم بإنهاء بيئة Visual Basic.
  6. إنشاء نسخة من جدول العملاء ومن ثم حفظه كـ tNewTable. للقيام بذلك، اتبع الخطوات التالية:
    1. في الإطار "قاعدة بيانات" ، انقر بزر الماوس الأيمن فوق جدول العملاء ومن ثم انقر فوق حفظ باسم القائمة المختصرة.

      ملاحظة في Access 2007، انقر فوق جدول العملاء في جزء التنقل انقر فوق زر Microsoft Office ، وأشر إلى حفظ باسم ثم ثم انقر فوق حفظ كائن باسم.
    2. في مربع الحوار حفظ باسم، اكتب tNewTable في المربع حفظ جدول 'العملاء' إلى ومن ثم انقر فوق موافق.
  7. في الإطار "قاعدة بيانات" ، انقر فوق نماذج أسفل كائنات انقر فوق جديد ثم ثم انقر فوق موافق لفتح نموذج جديد في طريقة العرض "تصميم".

    ملاحظة في Access 2007، انقر فوق تصميم نموذج في مجموعة نماذج على علامة التبويب إنشاء.
  8. إضافة زر أمر إلى نموذج جديد.
  9. تعيين الخاصية عند_النقر زر أمر جديد إلى إجراء الحدث التالي:
    On Error GoTo EH:'Code only works if ADP is connected.If CurrentProject.IsConnected Then    Dim bNewAppRole As Boolean, strTSQL As String    Dim strRoleName As String, strPW As String    strRoleName = "AppRoleName"    strPW = "Password"    'Call function to create app role.    bNewAppRole = AddNewAppRole(strRoleName, strPW)    'Test to see if it failed.    If bNewAppRole = False Then        Exit Sub    End If    MsgBox "New Application role '" & strRoleName & "' created", vbInformation    'Create command to grant permissions.    strTSQL = "Grant Select on tNewTable to " & strRoleName    'Send the command.    Application.CurrentProject.Connection.Execute strTSQL    MsgBox "Select permissions granted on tNewTable for " & strRoleNameElseMsgBox "ADP must be connected to SQL Server"End IfExit SubEH:MsgBox Err.Number & ": " & Err.Description, vbCritical					
  10. إغلاق بيئة Visual Basic للعودة إلى النموذج.
  11. حفظ النموذج ومن ثم التبديل النموذج عرض النموذج.
  12. انقر فوق زر الأمر لتشغيل التعليمات البرمجية الأساسية.

    لاحظ ظهور مربعي رسالة لتوضيح النجاح. ظهور أحد بعد إنشاء دور التطبيق عليه يتم منح واحد الثاني بعد أذونات دور جديد tNewTable.

تطبيق دور التطبيق

complication الرئيسي عند استخدام أدوار التطبيق في مشاريع Access يستخدم Access ثلاثة اتصالات بـ SQL Server لمعالجة للمهام المختلفة. وبشكل مثالي، لتطبيق دور تطبيق ما على المشروع بأكمله ويجب عليك تنفيذ sp_setapprole في سياق كافة الاتصالات الثلاثة. كائنات معالجتها من قبل كل اتصال كالتالي:

  1. يستخدم لتحديد تظهر الكائنات في قاعدة بيانات الإطار ومن أجل قاعدة البيانات متنوعة المهام الإدارية.

    استخدام فتح الجداول و طرق العرض والإجراءات المخزنة دالات و مصادر السجلات النماذج و التقارير الفرعية (ولكن ليس التقرير الرئيسي نفسه).

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

    يستخدم من أجل الحصول على مصادر السجلات مربعات التحرير والسرد مربعات القائمة والتقارير.
  3. يستخدم من أجل الحصول على مصادر السجلات مربعات التحرير والسرد مربعات القائمة والتقارير.

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

استخدم الخطوات التالية مشروع Access نموذج Northwind إلى كيفية تطبيق دور تطبيق ما مقابل اتصالات # 2 و # 3:

  1. في الإطار "قاعدة بيانات" ، انقر فوق نماذج أسفل كائنات انقر فوق جديد ثم ثم انقر فوق موافق لفتح نموذج جديد في طريقة العرض "تصميم".

    ملاحظة في Access 2007، انقر فوق تصميم نموذج في مجموعة نماذج على علامة التبويب إنشاء.
  2. إضافة مربع قائمة إلى نموذج تم إنشاؤه حديثاً ثم قم بتعيين الخاصية اسم مربع القائمة إلى lst_AppRole.
  3. إضافة زر أمر إلى النموذج.
  4. تعيين الخاصية عند_النقر زر أمر جديد إلى إجراء الحدث التالي:
    On Error GoTo EH    'This avoids a message that no records were returned.DoCmd.SetWarnings FalseDim TSQLTSQL = "EXEC sp_setapprole 'AppRoleName', {Encrypt N 'Password'}, 'odbc'"    'This sets the app role on Connection #2.Application.CurrentProject.Connection.Execute TSQL    'This sets the app role on Connection #3.lst_approle.RowSource = TSQLlst_approle.RequeryDoCmd.SetWarnings TrueMsgBox "The application Role is now in effect.", vbInformationExit SubEH:MsgBox Err.Number & ": " & Err.Description, vbCritical					
  5. إغلاق بيئة Visual Basic للعودة إلى النموذج.
  6. حفظ النموذج ومن ثم التبديل النموذج عرض النموذج.
  7. انقر فوق زر الأمر لتشغيل التعليمات البرمجية الأساسية.

    لاحظ ظهور مربع رسالة التي تشير إلى النجاح.
  8. في الإطار "قاعدة بيانات" ، انقر فوق جداول أسفل كائنات ثم قم بفتح الجدول tNewTable.

    ملاحظة في Access 2007، انقر نقراً مزدوجاً فوق الجدول tNewTable في جزء التنقل.
  9. تعديل سجل ومحاولة حفظ التغييرات.
لاحظ أنه أثناء محاولة تنفيذ التغييرات الخاصة بك تظهر رسالة خطأ حول عدم وجود أذونات كافية. يحدث هذا بسبب أعطيته دور التطبيق جديد تحديد إذن على جدول tNewTable ولكن لا الإذن التحديث.

حسب التصميم يعرض Access الكائنات في إطار قاعدة البيانات الذي يحتوي على الأقل تحديد المستخدم أو تنفيذ الأذونات فقط. يستخدم الوصول اتصال # 1 لتحديد الكائنات يكون لدى مستخدم أذونات. بعد تطبيق التطبيق الدور إلى إطار اتصالات # 2 و3 # قاعدة البيانات تظل تعرض نفس الكائنات التي لم قبل ، حتى لو لم يعد قد يكون لديك أذونات إلى كافة كائنات المستخدم، أو قد يكون لديك أذونات إلى أكثر من الكائنات التي لا تظهر. قد يتسبب هذا في سلوك غير متوقع عند استخدام إطار قاعدة البيانات.

على سبيل المثال، عند فتح جدول tNewTable "يظهر" لدى المستخدم أذونات بتحرير ثم إدراج سجلات. تمكين رمز سجل إدراج جديد في أسفل الجدول ثم يكون المستخدم قادراً على وضع سجل في وضع التحرير. عدم ظهور أي دليل مرئي وإلا للإشارة إلى أن محاولة تنفيذ "تحرير" أو "إدراج النتائج في رسالة خطأ. يؤكد الوصول لديك أذونات عند فعلياً لم تقم.

الحل الأكثر فعالية هو توفير واجهة مخصصة للمستخدم وإلى لا تعتمد على الإطار "قاعدة بيانات". باستخدام "واجهة مستخدم نوع لوحة تبديل" ، يمكنك التحكم في الكائنات التي للمستخدم الوصول إلى.

قيود و اعتبارات الأمان الأخرى

لا تعمل النماذج الفرعية

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

تقارير لا يعمل

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

كمحاولة للتغلب على هذه المشكلة قم دوماً استخدام عبارات SQL للعمليات كمصدر السجل للنماذج والتقارير. على سبيل المثال، استخدم "تحديد * من ViewName" بدلاً من مجرد "ViewName" أو "Exec StoredProcedureName" بدلاً من مجرد "StoredProcedureName." بهذه الطريقة، يقوم بتمرير عبارات SQL للعمليات مباشرة إلى SQL Server والوصول باسترداد البيانات استناداً إلى الأذونات دور التطبيق.

دور "قاعدة البيانات العمومية"

دور تطبيق ما تكتسب أذونات دور قاعدة البيانات العمومية. بشكل افتراضي في NorthwindCS دور العام له أذونات كاملة معظم الكائنات. لذلك، يكون دور تطبيق ما فاعلية بشكل عام. عند إنشاء جدول tNewTable في قسم "إنشاء دور التطبيقات" تم عدم منح الدور العمومي الإذن إلى الجدول ثم قمت بمشاهدة تأثيرات سياق الأمان دور التطبيق لاحقاً في هذا الجدول. ومع ذلك، جداول أخرى قد لا تظهر أية الفرق ضمن دور التطبيق لأن دور العام له أذونات إلى هذه الكائنات.

الأمان VBA

ولأن مضمن كلمة المرور الخاصة دور التطبيقات في التطبيق الذي يطلق عليه مستخدم knowledgeable أن قادراً على قراءة اسم دور التطبيق وكلمة المرور من التعليمات البرمجية المصدر ومن ثم استخدام تلك المعلومات إلى الحصول على صلاحية الوصول إلى ملقم SQL من تطبيق آخر. لذلك، من المستحسن التحويل البرمجي في ADP إلى ملف ADE بحيث التعليمات البرمجية المصدر غير قابل للعرض. أدنى ، فرض كلمة مرور على مشروع VBA.
ACC2007 reviewdocidACC2003 ACC2002
مراجع
للحصول على معلومات إضافية حول إصدار Microsoft Access 2000 من هذه المقالة، انقر فوق رقم المقالة أدناه لعرضها في "قاعدة المعارف لـ Microsoft:
318816ACC2000: كيفية استخدام أدوار التطبيق مع مشروعات Access و SQL Server 2000 سطح المكتب Engine (MSDE 2000)
لمزيد من المعلومات حول GRANT راجع إلى كتب SQL Server الفورية. كتب SQL Server الفورية يتوفر في موقع Microsoft التالي على الويب:
http://www.microsoft.com/sql/techinfo/productdoc/2000/default.asp

تحذير: تمت ترجمة هذه المقالة تلقائيًا

خصائص

رقم الموضوع: 308312 - آخر مراجعة: 03/29/2007 17:22:00 - المراجعة: 6.2

Microsoft Office Access 2007, Microsoft Office Access 2003, Microsoft Access 2002 Standard Edition

  • kbmt kbexpertiseinter kbinfo kbprogramming kbadp kbvba kbhowto KB308312 KbMtar
تعليقات