2010-11-24 8 views
9

मैंने एक लॉगिन और डेटाबेस उपयोगकर्ता बनाया है जिसे "MYDOMAIN \ Domain Users" कहा जाता है। मुझे यह पता लगाने की ज़रूरत है कि डोमेन उपयोगकर्ता पर कौन सी भूमिकाएं लॉग इन हैं लेकिन वर्तमान उपयोगकर्ता को डोमेन उपयोगकर्ता नाम जैसे सभी कॉल प्राप्त करने के लिए सभी कॉल हैं। "MYDOMAIN \ username" डेटाबेस उपयोगकर्ता नाम उदाहरण नहीं है। "MYDOMAIN \ डोमेन उपयोगकर्ता"।loginname, डेटाबेस उपयोगकर्ता नाम, या sqlserver डोमेन उपयोगकर्ता की भूमिका कैसे खोजें, जिनके पास अपना लॉगिन नहीं है?

उदाहरण के लिए, इस क्वेरी देता है "MYDOMAIN \ उपयोगकर्ता नाम"

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

और इस क्वेरी रिटर्न 0

select USER_ID() 

मैं चाहता हूँ database_role_members क्वेरी करने के लिए उपयोगकर्ता नाम वहाँ किसी भी समारोह है कि यह वापस आ जाएगी या है किसी भी अन्य तरीके से मैं वर्तमान उपयोगकर्ताओं की भूमिका प्राप्त कर सकता हूं?

उत्तर

9

मुझे समझ में आता है कि डोमेन उपयोगकर्ता लॉगिन एडी समूह में मैप किया गया है?

आपको यह ध्यान में रखना होगा कि उपयोगकर्ता कई एडी समूहों में हो सकता है और उनमें से प्रत्येक को डेटाबेस में किसी भी तरह मैप किया जा सकता है जो थोड़ा गन्दा हो सकता है।

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

मुझे लगता है कि यह ठीक से सभी विंडोज समूह लॉगिन विशेष उपयोगकर्ताओं के साथ संबद्ध रहेगा कि हड़पने चाहिए: यह भी आप एक से अधिक परिणाम :) के साथ कुछ

इस प्रयास करें की जरूरत का मतलब है। सभी तरह - - उसके बाद आप डेटाबेस उपयोगकर्ताओं यानी .:

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) 

आप मन में है कि रखने के लिए के लिए यह शामिल हो सकते हैं यदि आप तो एकल मूल्यों पूरे सेट को संभालने के लिए आवश्यकता हो सकती है।

संबंधित मुद्दे