मैं डेटाबेस के आधार पर निम्न क्वेरी चला रहा हूँ:स्पष्टीकरण के रूप में क्यों उपयोगकर्ता/लॉगिन के रूप में अपेक्षित परिणाम वापस नहीं कर रहे हैं?
execute as user = 'domain\username'
select * from fn_my_permissions(null, 'DATABASE')
order by subentity_name, permission_name
revert;
लेकिन निम्न त्रुटि फेंक दिया जाता है:
Cannot execute as the database principal because the principal "dev\spadmin" does not exist, this type of principal cannot be impersonated, or you do not have permission.
उपयोगकर्ता डेटाबेस की dbo है, और जब मैं खोल प्रबंधन स्टूडियो में गुण, मैं देख सकता हूं कि यह उस लॉगिन से जुड़ा हुआ है। दूसरी ओर, EXECUTE AS LOGIN = 'domain\username'
चल रहा है परिणाम। और यदि मैं स्पष्ट रूप से EXECUTE AS USER = 'dbo'
चलाता हूं, तो मुझे परिणाम मिलते हैं। मेरे पास एक अलग डेटाबेस भी है जहां यह वही परिदृश्य EXECUTE AS USER
और EXECUTE AS LOGIN
दोनों के साथ परिणाम देता है।
एक अलग उपयोगकर्ता के साथ एक और परिदृश्य में, मैंने EXECUTE AS LOGIN = 'domain\username'
चलाया है और मुझे परिणाम नहीं मिलते हैं, लेकिन मुझे EXECUTE AS USER = 'domain\username'
के साथ परिणाम मिलते हैं।
इन परिदृश्यों में दोनों उपयोगकर्ता लॉग इन से जुड़े हैं जो डेटाबेस के लिए db_owner
के सदस्य हैं।
क्या कोई मुझे बता सकता है कि ये प्रश्न उन परिणामों को वापस क्यों नहीं कर रहे हैं जिनकी मैं अपेक्षा करता हूं? और अगर मुझे कोई महत्वपूर्ण जानकारी याद आ रही है तो मुझे बताएं। धन्यवाद!
जो चीज मुझे भ्रमित करती है वह यह है कि 'उपयोगकर्ता के रूप में निष्पादित करें' 'डोमेन \ उपयोगकर्ता नाम' दूसरे डेटाबेस पर काम करता है जहां उपयोगकर्ता डीबीओ है लेकिन इस डेटाबेस पर नहीं। कोई विचार क्यों हो सकता है? – athom
मेरा अनुमान है कि वे एक गैर-डीबीओ उपयोगकर्ता थे और बाद में डेटाबेस के मालिक बन गए, लेकिन उनकी पुरानी उपयोगकर्ता प्रविष्टि पीछे छोड़ दी गई। ऐसा नहीं होना चाहिए लेकिन मैंने इसे निश्चित रूप से देखा है। – RBarryYoung
मैंने यह देखने के लिए जांच की कि दोनों उपयोगकर्ताओं के बीच अंतर क्या था। वह उपयोगकर्ता जहां 'उपयोगकर्ता के रूप में निष्पादित करें' क्वेरी काम नहीं कर रही थी, उसके पास डीबीक्रिएटर, सार्वजनिक और सुरक्षा व्यवस्थापक की सर्वर भूमिकाएं हैं।उपयोगकर्ता जिस क्वेरी में काम करता था, सभी सर्वर भूमिकाएं थीं। एक बार जब मैंने इसे अन्य उपयोगकर्ता के समान भूमिका निभाई, तो मुझे अन्य उपयोगकर्ता के समान परिणाम मिल गए। – athom