मौजूदा SQL सर्वर लॉगिन और उपयोगकर्ताओं की सूची बनाना


14

मुझे पता है कि हम SQL सर्वर में GUI का उपयोग करके लॉगिन और उपयोगकर्ता को परिभाषित कर सकते हैं, लेकिन सोच रहे हैं कि हम स्क्रिप्ट का उपयोग करके यह कैसे कर सकते हैं।

मैंने नीचे क्वेरी चलाई, लेकिन यह प्रिंसिपल_ड दिखाती है जो मुझे यकीन नहीं है कि अनुमति स्तर प्राप्त करने के लिए मैप कैसे करें।

SELECT * FROM Sys.login_token 

तो क्या कोई अंतर्निहित संग्रहित खरीद है जो लॉगिन और उपयोगकर्ताओं को उनकी अनुमति स्तर के साथ सूचीबद्ध कर सकती है ?

धन्यवाद।


"अनुमति स्तर" को परिभाषित करें। ऑब्जेक्ट राइट्स, डेटाबेस रोल सदस्यता, सर्वर रोल सदस्यता?
mrdenny

जब संदेह हो, तो प्रबंधन स्टूडियो के खिलाफ प्रोइलर चालू करें और देखें कि यह क्या करता है।
जॉन सीगल

जवाबों:


14

सुनिश्चित नहीं है कि कोई अंतर्निहित तरीका है, लेकिन इस क्वेरी को सर्वर प्रिंसिपलों के लिए आज़माएं:

;with ServerPermsAndRoles as
(
    select
        spr.name as principal_name,
        spr.type_desc as principal_type,
        spm.permission_name collate SQL_Latin1_General_CP1_CI_AS as security_entity,
        'permission' as security_type,
        spm.state_desc
    from sys.server_principals spr
    inner join sys.server_permissions spm
    on spr.principal_id = spm.grantee_principal_id
    where spr.type in ('s', 'u')

    union all

    select
        sp.name as principal_name,
        sp.type_desc as principal_type,
        spr.name as security_entity,
        'role membership' as security_type,
        null as state_desc
    from sys.server_principals sp
    inner join sys.server_role_members srm
    on sp.principal_id = srm.member_principal_id
    inner join sys.server_principals spr
    on srm.role_principal_id = spr.principal_id
    where sp.type in ('s', 'u')
)
select *
from ServerPermsAndRoles
order by principal_name

मूल रूप से यह क्या करता है यह अनुमति दी और इनकार कर दिया जाता है, और भूमिका सदस्यता के साथ इसे एकजुट करता है। यह आपको सर्वर लॉगिन के लिए सुरक्षा पर एक संक्षिप्त रूप देना चाहिए। मुझे पता है कि अगर तुम क्या देख रहे हो।


यह बहुत उपयोगी था! मैंने एक स्ट्रिंग-कॉन्सेप्टेशन को "मुझे एक आदेश दिया है कि सूचीबद्ध प्रत्येक लॉगिन को अनुमति देने / रद्द करने के लिए दिखाओ", जैसे - CAST([srvperm].[state_desc] AS VARCHAR(MAX)) + ' ' + CAST(srvperm.[permission_name] AS VARCHAR(MAX)) + ' TO [' + CAST(srvprin.name AS VARCHAR(MAX)) + '];' as GrantQueryजो उन अनुमतियों को दोहराने में मदद करता है यदि आप सर्वर से पलायन कर रहे हैं :)
NateJ

8

इसे आज़माएं - यह उपयोगकर्ताओं, वस्तुओं और उन वस्तुओं पर आने वाली अनुमतियों को सूचीबद्ध करेगा:

SELECT p.name, o.name, d.*
FROM sys.database_principals AS p
JOIN sys.database_permissions AS d ON d.grantee_principal_id = p.principal_id
JOIN sys.objects AS o ON o.object_id = d.major_id

आपको sys.fn_my_permissions फ़ंक्शन को भी देखना चाहिए:

http://msdn.microsoft.com/en-us/library/ms188367.aspx

यहां कुछ लिंक दिए गए हैं जिनकी आपको भी मदद करनी चाहिए:

अनुमतियाँ: http://msdn.microsoft.com/en-us/library/ms191291.aspx

SYS.DATABASE_PERMISSIONS: http://msdn.microsoft.com/en-us/library/ms188367.aspx

मैं आशान्वित हूं कि इससे आपको सहायता मिलेगी।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.