كيفية العثور على loginname أو اسم مستخدم قاعدة البيانات أو أدوار مستخدم SQLServer Domain الذي ليس لديه تسجيل الدخول الخاص بهم؟

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

سؤال

لقد قمت بإنشاء مستخدم تسجيل الدخول وقاعدة البيانات يسمى "MyDomain Domain Users". أحتاج إلى العثور على الأدوار التي يتمتع بها مستخدم DOGRED ON DOMAIN ولكن جميع المكالمات لإرجاع المستخدم الحالي اسم مستخدم المجال على سبيل المثال. "mydomain username" ليس اسم المستخدم قاعدة البيانات على سبيل المثال. "MyDomain Domain Users".

على سبيل المثال ، يعيد هذا الاستعلام "mydomain username"

select original_login(),suser_name(), suser_sname(), system_user, session_user,  current_user, user_name()

ويعود هذا الاستعلام 0

select USER_ID()

أريد أن يستعرض اسم المستخدم database_role_members هل هناك أي وظيفة ستعيدها أو بأي طريقة أخرى يمكنني الحصول عليها من أدوار المستخدمين الحاليين؟

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

المحلول

أفهم أن تسجيل الدخول إلى مستخدمي المجال يتم تعيينه في مجموعة الإعلانات؟

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

جرب هذا:

select * from sys.server_principals where type_desc = 'WINDOWS_GROUP' and is_member(name) = 1

أعتقد أنه يجب أن يمسك جميع عمليات تسجيل دخول Windows Group بشكل صحيح والتي سيتم ربطها مع مستخدمين معينين. بعد ذلك يمكنك الانضمام إليه لمستخدمي قاعدة البيانات أي:

Select u.name from YourDB.sys.syslogins l
inner join YourDB.sys.sysusers u
on l.sid = u.sid
where l.loginname = ANY (select * from sys.server_principals where type_desc = 'WINDOWS_GROUP' and is_member(name) = 1)

عليك أن تضع في اعتبارك ذلك - على طول الطريق - قد تحتاج إلى التعامل مع مجموعات كاملة بدلاً من القيم المفردة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top