বিদ্যমান এসকিউএল সার্ভার লগইন এবং ব্যবহারকারীদের তালিকাভুক্ত


14

আমি জানি যে আমরা লগইনগুলি এবং এসকিউএল সার্ভারে জিইউআই ব্যবহার করে সংজ্ঞায়িত ব্যবহারকারীদের চেক করতে পারি, তবে আমরা কীভাবে স্ক্রিপ্ট ব্যবহার করে এই চেকটি করতে পারি তা ভাবছি।

আমি নীচে ক্যোয়ারী চালিয়েছি তবে এটি প্রিন্সিপাল_আইডি দেখায় যা অনুমতি স্তরের কীভাবে মানচিত্র করব তা আমি নিশ্চিত নই।

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_permission ফাংশনটিও পরীক্ষা করা উচিত:

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

এটি তোমাকে সাহায্য করবে বলে আশা করি।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.