SQL Server 2005 "العامة" دور قاعدة البيانات لا يبدو أن تطبق ؟

StackOverflow https://stackoverflow.com/questions/370024

سؤال

لدي قاعدة بيانات SQL Server 2005 التي أحاول الوصول إلى حساب مستخدم محدود باستخدام مصادقة Windows.لدي BUILTIN\المستخدمين إضافة مستخدم قاعدة البيانات (قبل أن فعلت ذلك, لم أستطع حتى فتح قاعدة البيانات).أنا أعمل على افتراض أن الجميع يفترض أن يكون لديك أذونات "الجمهور" دور يطبق عليهم ، حتى أنا لم أفعل أي شيء مع تعيين الدور.تحت tblFoo يمكنني استخدام صواريخ أرض-أرض الحوار خصائص (صفحة الأذونات) لإضافة "العامة" ، ثم تعيين أذونات صريحة.ومن بين هذه هو "منحة" من أجل تحديد.ولكن تعمل

SELECT * from tblFoo;

كما المحدودة (BUILTIN\Users) حساب يعطيني خطأ "حدد تم رفض الإذن في الكائن 'tblFoo' قاعدة البيانات 'شريط' مخطط 'dbo'".في مربع الحوار خصائص ، هناك "ضوابط فعالة الزر لكنه الرمادي.

كذلك حاولت خلق غير priv حساب يسمى "UserTest" ، مضيفا أنه على مستوى الخادم ، ثم تعيين إلى "بار" قاعدة البيانات الخاصة بنا.هذا اسمحوا لي أن أضيف UserTest إلى "المستخدمين أو أدوار" قائمة اسمحوا لي أن تشغيل "الأذونات الفعالة" على الحساب.لا توجد أذونات مدرجة على الإطلاق-هذا لا يبدو صحيحا.الحساب يجب أن يكون في الأماكن العامة, العام المنح (من بين أمور أخرى) حدد على tblFoo لذا لماذا لا UserTest تظهر حساب فعال إذن ؟ أشعر أنني ذاهب مجنون قليلا هنا.

جانبا:أنا على علم بأن العديد من الناس لا يحبون استخدام "العامة" دور لتعيين أذونات.هذا هو مجرد ترقيع الوقت ؛ في التصميم النهائي أنا متأكد من أننا سوف يكون لها عدة مرنة (حسب الطلب) أدوار قاعدة البيانات.أنا فقط أحاول معرفة سلوك أنا أرى, لذا يرجى لا "لا تفعل ذلك!" إجابات.

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

هل كانت مفيدة؟

المحلول

وتحتاج فقط لديهم حقوق SELECT. في SQL الخام (انظر "السيناريو" رمز / زر في مربع الحوار الخاص بك)، انها GRANT SELECT ON dbo.tblFoo to public. هذا هو إذن الوحيد المطلوب لعرض البيانات،

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

إذا كان لديك أي حقوق، وكنت الحصول على رسالة (حوالي جدا) "tblFoo غير موجود أو لم يكن لديك حقوق"

و"رفض التحكم" يذكر هنا . في هذه الحالة، يمكنك نفى <م> جميع حقوق للدور العام.

<اقتباس فقرة>   

ووالممنوح لها على نحو فعال جميع   أذونات محددة على مأمون

نصائح أخرى

على افتراض "UserTest" هو حساب مستخدم مجال الاتصال عضوا دور مسؤول النظام و تشغيل

EXEC MASTER.dbo.xp_logininfo 'Domain\UserTest', 'all'

(استبدال الخاص بك اسم المجال "المجال")

وهذا عرض مجموعات Windows الخ.أن الحساب يرث أذونات الأمان من مستوى الوصول ، مثلوكنت أتوقع أن أرى شيئا مثل:

account name     type    privilege  mapped  login name       permission path
domain\usertest  user   user               domain\usertest  BUILTIN\Users

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

  • إنشاء دور قاعدة البيانات في قاعدة البيانات
  • تعيين أذونات صريحة أن دور
  • إنشاء ملقم تسجيل الدخول للمستخدم الخاص بك الحساب
  • فتح ملقم تسجيل الدخول اذهب إلى تعيين مستخدم القسم, انقر على قاعدة البيانات ثم اختر قاعدة البيانات دور قمت بإنشائه
scroll top