أنت غير متصل حاليًا، وفي انتظار الإنترنت الخاص بك ليقوم بإعادة الاتصال

إن المستعرض الذي تستخدمه غير معتمد

إنك تحتاج إلى تحديث المستعرض لاستخدام الموقع.

التحديث إلى أحدث إصدار من Internet Explorer

قد تتلقى "تم رفض إذن" رسالة خطأ عند تطبيق يحاول تطبيق يستند إلى دور حدد السجلات من أي أحد جداول النظام في قاعدة بيانات رئيسية SQL Server 2005

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

اضغط هنا لرابط المقالة باللغة الانجليزية906549
الأعراض
في حالة محاولة أحد تطبيقات المستندة إلى دور تطبيق حدد كافة السجلات من أحد جداول النظام في قاعدة بيانات رئيسية Microsoft SQL Server 2005 ، قد تواجه أحد الأعراض التالية:
  • عدم إرجاع أية سجلات.
  • تظهر رسالة الخطأ التالية:
    تم رفض الإذن.
على سبيل المثال، قد تحدث هذه المشكلة في حالة قيام التطبيق باستخدام الاستعلام التالية.
select * from master.dbo.syslogins
السبب
تم تصميم التطبيقات المستندة إلى دور التطبيق للعمل مع معلومات معينة في قاعدة بيانات. لا يمكن الوصول إلى هذه التطبيقات على جداول النظام في عرض رئيسي أو في طريقة عرض إدارة حيوي. تتضمن طرق عرض هذه المعلومات مستوى الملقم.
الحل
لحل هذه المشكلة، استخدم الإجراءات توقيع الشهادة الوصول إلى جداول النظام مستوى الملقم. يوفر توقيع الشهادة الإجراءات الفوائد التالية:
  • لا يلزم استخدام العلامات التتبع.
  • قد يكون عن معلومات أقل مستوى الملقم. يجب أن تستخدم التطبيقات المستندة إلى دور التطبيق الإجراءات المخزنة بدلاً من استخدام الاستعلامات العامة. الإجراءات المخزنة من المحتمل أكثر لإرجاع البيانات معينة مطلوبة من قِبل التطبيق.
الحل البديل
كمحاولة للتغلب على هذه المشكلة قم بتمكين إشارة تتبع العمومية 4616.
معلومات أخرى
نموذج التعليمات البرمجية التالي مثال إجراء توقيع الشهادة. approle_db
USE masterGOCREATE DATABASE approle_db ;GOCREATE LOGIN some_login WITH PASSWORD = 'SomePa$$word!' ;GOUSE approle_dbGOCREATE USER some_user FOR LOGIN some_loginGOEXEC sp_addapprole 'an_approle', 'SomeAppRolePa$$word!' ;GO----------------------------------------------------------------------- This section shows how to use a certificate to authenticate-- a signed procedure.---------------------------------------------------------------------CREATE LOGIN execute_as_login WITH PASSWORD = 'SomePa$$word!' ;GOUSE masterGOGRANT VIEW ANY DEFINITION TO execute_as_login ;GRANT VIEW SERVER STATE   TO execute_as_login ;GOUSE approle_dbGOCREATE USER execute_as_user FOR LOGIN execute_as_login ;GO---- You must use EXECUTE AS 'authenticator' here because the application role-- does not have a server identity. Therefore, the application role cannot use-- the certificate permissions on the server.  Therefore, you-- need a new execution context to which you can grant-- the needed VIEW* permissions.--CREATE PROC access_server_system_tables  WITH EXECUTE AS 'execute_as_user'AS  SELECT * FROM master.dbo.syslogins    ;  SELECT * FROM master.dbo.sysprocesses ;GOGRANT EXECUTE ON access_server_system_tables TO an_approle ;GOCREATE CERTIFICATE signing_cert ENCRYPTION BY PASSWORD = 'SomeCertPa$$word'    WITH SUBJECT  = 'Signing Cert' ;GOBACKUP CERTIFICATE signing_cert TO FILE = 'signing_cert.cer' ;GOADD SIGNATURE TO access_server_system_tables    BY CERTIFICATE signing_cert WITH PASSWORD = 'SomeCertPa$$word' ;GO----------------------------------------------------------------------- We must create a copy of the signing certificate in the target-- database. In this case, the target database is the master database.-- This copy of the signing certificate can vouch-- for the execution contexts that enter this database from the-- signed procedure.---------------------------------------------------------------------USE masterGOCREATE CERTIFICATE signing_cert FROM FILE = 'signing_cert.cer' ;GO---- Because the VIEW* permissions in question are server-level permissions,-- we need an AUTHENTICATE SERVER on a login-mapped certificate.--CREATE LOGIN signing_cert_login FROM CERTIFICATE signing_cert ;GOGRANT AUTHENTICATE SERVER TO signing_cert_loginGO----------------------------------------------------------------------- Now you can open a new connection as "some_login" and-- set the application role. Then, call the "access_server_system_tables"-- procedure, and obtain verification that you can access server-level information-- when the application role-based application runs.  -------------------------------------------------------------------------------------------------------------------------------------------- Clean up after the procedure.---------------------------------------------------------------------USE masterGODROP DATABASE approle_db ;GODROP LOGIN some_login;GODROP LOGIN execute_as_login;GODROP LOGIN signing_cert_login ;GODROP CERTIFICATE signing_cert;GO---- Make sure to delete the certificate file. For example, delete-- C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\signing_cert.cer--EXEC sp_configure 'show advanced options', 1 ;GORECONFIGURE ;GOEXEC sp_configure 'xp_cmdshell', 1 ;GORECONFIGURE ;GOEXEC xp_cmdshell 'del "C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\signing_cert.cer"' ;GOEXEC sp_configure 'xp_cmdshell', 0 ;GORECONFIGURE ;GO-- ============================================================================-- - Application role access to server information - Demo usage.sql------  This code is companion code that shows an example of application role access--  to server information by using a certificate-signed procedure.---- ============================================================================---------------------------------------------------- Connect as some_login--------------------------------------------------USE approle_dbGOEXEC sp_setapprole 'an_approle', 'SomeAppRolePa$$word!'GOEXEC access_server_system_tablesGO

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

خصائص

رقم الموضوع: 906549 - آخر مراجعة: 11/20/2007 17:42:52 - المراجعة: 2.3

  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Enterprise Edition
  • Microsoft SQL Server 2005 Enterprise Edition for Itanium Based Systems
  • Microsoft SQL Server 2005 Enterprise X64 Edition
  • Microsoft SQL Server 2005 Express Edition
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Standard Edition for Itanium Based Systems
  • Microsoft SQL Server 2005 Standard X64 Edition
  • Microsoft SQL Server 2005 Workgroup Edition
  • kbmt kbsql2005engine kbtshoot kbprb KB906549 KbMtar
تعليقات
did=1&t=">/c1.microsoft.com/c.gif?DI=4050&did=1&t=">