Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

SQL सर्वर सुरक्षा फ़ंक्शन को समझना HAS_Permis_BY_Name और इसके उपयोग के मामले

ऐसे कई उदाहरण हैं जब हम किसी प्रिंसिपल के लिए सिक्योरेबल पर अनुमति की जांच करना चाहते हैं। आगे बढ़ने से पहले, आइए देखें कि प्रिंसिपल, सिक्योरेबल्स और अनुमतियां क्या हैं।

Microsoft दस्तावेज़ीकरण के अनुसार,

  1. सिक्योरेबल्स SQL सर्वर संदर्भ में विशिष्ट संसाधन हैं जिन तक SQL सर्वर डेटाबेस इंजन प्राधिकरण प्रणाली पहुंच को नियंत्रित करती है। उन्हें तीन श्रेणियों में बांटा गया है:सर्वर, डेटाबेस और स्कीमा। सामान्य तौर पर, कोई भी SQL सर्वर या डेटाबेस ऑब्जेक्ट सुरक्षित हो सकते हैं।
  2. अनुमतियां वे नियंत्रण हैं जिनके उपयोग से हम किसी सुरक्षित को कुछ निश्चित स्तर तक पहुंच प्रदान करते हैं या अस्वीकार करते हैं।
  3. प्रिंसिपल एक इकाई है कि एक सुरक्षित करने के लिए अनुमति प्राप्त करता है। सबसे आम प्रिंसिपल लॉगिन और डेटाबेस उपयोगकर्ता हैं।

SQL सर्वर में एक अंतर्निहित सुरक्षा फ़ंक्शन है HAS_Permis_BY_Name इससे हमें यह पता लगाने में मदद मिलेगी कि किसी पहचाने गए प्रिंसिपल के पास किसी दिए गए सिक्योरेबल पर विशिष्ट अनुमति है या नहीं। यह सिस्टम फ़ंक्शन 1 लौटाता है यदि किसी दिए गए सुरक्षित पर उस प्रिंसिपल को प्रभावी अनुमति दी जाती है, और यदि प्रभावी अनुमति नहीं दी जाती है तो यह 0 देता है। यदि प्रभावी अनुमति या सुरक्षित वर्ग मान्य नहीं है, तो आपको NULL मान मिलेगा।

HAS_Permis_BY_Name सिस्टम फ़ंक्शन आपके लॉगिन के लिए अनुमति की जाँच करने में भी बहुत उपयोगी है। मैं आपको इस लेख में अपने प्रिंसिपल और अन्य प्रिंसिपलों के लिए एक सुरक्षित पर विशिष्ट अनुमति की जांच करने के लिए एक चरण-दर-चरण प्रक्रिया दिखाऊंगा।

इस सिस्टम फ़ंक्शन का T-SQL सिंटैक्स इस प्रकार है:

--T-SQL syntax
HAS_PERMS_BY_NAME (securable, securable_class, permission)
   

इस सिस्टम SQL सर्वर सुरक्षा फ़ंक्शन को निष्पादित करने के लिए तीन अनिवार्य मापदंडों की आवश्यकता होगी।

  • सुरक्षितका नाम दर्ज करें जिसके बारे में आप अनुमति की जांच करना चाहते हैं। यदि एक सुरक्षित सर्वर ही सर्वर है, तो आपको NULL का उपयोग करना चाहिए।
  • दूसरा पैरामीटर है securable_class जो वर्ग का नाम है। यदि आप इसके बारे में सुनिश्चित नहीं हैं, तो आप सुरक्षित वर्ग और उनकी उपलब्ध अनुमतियों की पूरी सूची प्राप्त करने के लिए एक अन्य सिस्टम फ़ंक्शन sys.fn_builtin_permissions का उपयोग कर सकते हैं।
  • तीसरा पैरामीटर है अनुमति जहां आपको प्रभावी अनुमति दर्ज करने की आवश्यकता है जिसके बारे में आप निर्दिष्ट सुरक्षित पर जांचना चाहते हैं।

अब, मैं आपको सिस्टम फंक्शन sys.fn_builtin_permissions चलाकर सभी उपलब्ध सुरक्षित कक्षाओं को दिखाता हूँ। मैंने प्रति सुरक्षित वर्ग पंक्तियों को प्रदर्शित करने के लिए DISTINCT का उपयोग किया है।

--Display all securable_class
SELECT distinct class_desc FROM sys.fn_builtin_permissions(default)

यहां, आप सुरक्षित वर्ग की सूची प्राप्त कर सकते हैं।

यदि आप किसी भी सुरक्षित वर्ग के लिए सभी संभावित अनुमतियों की जांच करना चाहते हैं, तो आप इस सिस्टम फ़ंक्शन का भी उपयोग कर सकते हैं। नीचे दिए गए T-SQL स्टेटमेंट को रन करें:

--Display each permission for all securable class
SELECT class_desc,permission_name FROM sys.fn_builtin_permissions(default);

हम नीचे दी गई छवि में सूची देख सकते हैं। class_desc एक सुरक्षित वर्ग है और permission_name एक प्रकार की अनुमति है। यदि आप सुरक्षित वर्ग के बारे में सुनिश्चित नहीं हैं और किसी भी सुरक्षित के लिए अनुमतियों की जाँच की जानी है, तो आप इस सिस्टम फ़ंक्शन का उपयोग कर सकते हैं।

HAS_Permis_BY_Name उपयोग के मामले

मैं आपको SQL सर्वर इंस्टेंस में अपने स्वयं के लॉगिन के लिए और मानवेंद्र नामक एक अतिरिक्त लॉगिन के लिए विभिन्न अनुमतियों की जाँच के 5 उपयोग के मामले दिखाऊंगा। ।

  1. सर्वर या इंस्टेंस स्तर की अनुमतियां जांचें
  2. डेटाबेस स्तर अनुमतियां जांचें
  3. ऑब्जेक्ट स्तर अनुमतियां जांचें
  4. लॉगिन अनुमतियां जांचें
  5. अन्य अनुमतियों की जाँच करें जैसे पूर्ण पाठ कैटलॉग, स्कीमा आदि।

आइए इंस्टेंस-स्तरीय अनुमतियों की जांच के लिए पहले उपयोग के मामले से शुरू करें।

केस 1 का उपयोग करें:SQL सर्वर या इंस्टेंस-लेवल अनुमति की जांच करें

यह उपयोग मामला दिखाएगा कि सर्वर प्रिंसिपल\लॉगिन के लिए विभिन्न अनुमतियों की जांच कैसे करें। आप सिस्टम फ़ंक्शन sys.fn_builtin_permissions का उपयोग करके उपरोक्त T-SQL कथन चला सकते हैं। आप केवल सर्वर-स्तरीय अनुमतियों को सूचीबद्ध करने के लिए इस फ़ंक्शन में WHERE क्लॉज का उपयोग कर सकते हैं। यहां, मैं आपको अपने स्वयं के कनेक्टेड लॉगिन के लिए अनुमतियां दिखाऊंगा।

  • सर्वर स्थिति देखें
  • सर्वर भूमिका बनाएं
  • कोई भी डेटाबेस कनेक्ट करें

यदि आप सर्वर स्तर पर किसी अनुमति की तलाश कर रहे हैं, तो आपको हमेशा NULL को एक सुरक्षित तर्क के रूप में पास करना चाहिए। इस उदाहरण में, NULL अपने सर्वर स्तर के रूप में सुरक्षित होगा और उपरोक्त अनुमति नामों में अनुमति तर्क होगा। सर्वर-स्तरीय अनुमतियों की जाँच करने के लिए नीचे दिए गए T-SQL कथन को चलाएँ।

--Display server level permission for your own login using which you have established the database connection
SELECT HAS_PERMS_BY_NAME(null, null, 'VIEW SERVER STATE') AS [VIEW SERVER STATE],
	HAS_PERMS_BY_NAME(null, null, 'CREATE SERVER ROLE') AS [CREATE SERVER ROLE],
	HAS_PERMS_BY_NAME(null, null, 'CONNECT ANY DATABASE') AS [CONNECT ANY DATABASE]

आउटपुट नीचे की छवि में दिखाया गया है। मेरे लॉगिन के लिए सभी अनुमतियों के लिए टी-एसक्यूएल ने 1 लौटाया है। इसका मतलब है कि मेरे पास तीनों ऑपरेशनों की अनुमति है। मैं सर्वर स्थिति देख सकता हूं, मैं सर्वर भूमिका बना सकता हूं और मैं इस सर्वर या इंस्टेंस पर किसी भी डेटाबेस से भी जुड़ सकता हूं।

मैं आपको दिखाता हूं कि क्या 'मानवेंद्र' नाम के एक लॉगिन में उपरोक्त 3 कार्यों के लिए अनुमति है। हम एक्सेस स्तर की जांच के लिए EXECUTE AS LOGIN T-SQL स्टेटमेंट का उपयोग करेंगे। सुनिश्चित करें कि आपके पास उस लॉगिन पर IMPERSONATE अनुमति है जिसके लिए आप अनुमतियों की जाँच कर रहे हैं। EXECUTE AS LOGIN स्टेटमेंट के बाद ऊपर दिए गए समान T-SQL स्टेटमेंट को रन करें।

--Display server level permission for another login ‘manvendra’
EXECUTE AS LOGIN = ‘manvendra’
GO
SELECT HAS_PERMS_BY_NAME(null, null, 'VIEW SERVER STATE') AS [VIEW SERVER STATE],
	HAS_PERMS_BY_NAME(null, null, 'CREATE SERVER ROLE') AS [CREATE SERVER ROLE],
	HAS_PERMS_BY_NAME(null, null, 'CONNECT ANY DATABASE') AS [CONNECT ANY DATABASE]

यहां, हम देख सकते हैं कि लॉगिन 'मानवेंद्र' के पास सर्वर स्तर पर इन 3 गतिविधियों में से किसी तक भी पहुंच नहीं है क्योंकि उनका आउटपुट 0 लौटा है।

केस 2 का उपयोग करें:डेटाबेस-स्तर अनुमतियां जांचें

मैंने समझाया है कि उपरोक्त अनुभाग में सर्वर या इंस्टेंस स्तर पर किसी भी प्रिंसिपल के लिए विभिन्न अनुमतियों की जांच कैसे करें। अब, मैं आपको दिखाऊंगा कि डेटाबेस स्तर पर किसी भी प्रिंसिपल के लिए विभिन्न अनुमतियों की जांच कैसे करें। नीचे दिया गया कथन देखें:

--Display each permission for securable class ‘DATABASE’
SELECT class_desc,permission_name FROM sys.fn_builtin_permissions(default)
WHERE class_desc = ‘DATABASE’

आप नीचे दिए गए स्क्रीनशॉट में देख सकते हैं कि डेटाबेस स्तर पर 82 अनुमतियाँ उपलब्ध हैं।

मैंने नीचे दी गई अनुमतियों को यह जांचने के लिए चुना है कि मेरे लॉगिन या अतिरिक्त लॉगिन 'मानवेंद्र' को इन गतिविधियों को करने की अनुमति है या नहीं।

  • कोई भी
  • तालिका बनाएं
  • प्रक्रिया बनाएं
  • सम्मिलित करें
  • चुनें

यहां, सिक्योरेबल वह डेटाबेस नाम होगा जिस पर आप अनुमतियों की जांच करना चाहते हैं, सुरक्षित वर्ग 'डेटाबेस' होगा और अनुमति उपरोक्त अनुमति नाम होंगे। विभिन्न अनुमतियों की जाँच के लिए नीचे दिए गए T-SQL कथन को चलाएँ।

--Display few specific permissions for your own connected login on a DATABASE
SELECT HAS_PERMS_BY_NAME(db_name(), 'DATABASE', 'ANY') AS [DB Access],
HAS_PERMS_BY_NAME(db_name(), 'DATABASE', 'CREATE TABLE') AS [CREATE TABLE],
HAS_PERMS_BY_NAME(db_name(), 'DATABASE', 'CREATE PROCEDURE') AS [CREATE PROCEDURE],
HAS_PERMS_BY_NAME(db_name(), 'DATABASE', 'INSERT') AS [INSERT Access],
HAS_PERMS_BY_NAME(db_name(), 'DATABASE', 'SELECT') AS [SELECT Access]

आउटपुट प्रत्येक अनुमति के लिए 1 लौटा। इसका मतलब है कि मुझे वर्तमान डेटाबेस संदर्भ में उपरोक्त सभी गतिविधियों को करने की अनुमति है।

वर्तमान में चयनित डेटाबेस संदर्भ में लॉगिन 'मानवेंद्र' के लिए समान अनुमतियों की जांच के लिए नीचे दिए गए टी-एसक्यूएल कथन को चलाएं।

--Display few specific permissions for login ‘manvendra’ on current database
EXECUTE AS LOGIN ='manvendra'
GO
SELECT HAS_PERMS_BY_NAME(db_name(), 'DATABASE', 'ANY') AS [DB Access],
HAS_PERMS_BY_NAME(db_name(), 'DATABASE', 'CREATE TABLE') AS [CREATE TABLE],
HAS_PERMS_BY_NAME(db_name(), 'DATABASE', 'CREATE PROCEDURE') AS [CREATE PROCEDURE],
HAS_PERMS_BY_NAME(db_name(), 'DATABASE', 'INSERT') AS [INSERT Access],
HAS_PERMS_BY_NAME(db_name(), 'DATABASE', 'SELECT') AS [SELECT Access]

आउटपुट से पता चलता है कि लॉगिन 'मानवेंद्र' के पास इस डेटाबेस पर बहुत सीमित अनुमतियाँ हैं। यह लॉगिन केवल डेटाबेस से जुड़ सकता है और बाकी अनुमतियों की अनुमति नहीं है।

यहां, मैंने डेटाबेस संदर्भ को बदल दिया है और डेटाबेस 'AdventureWorksDW2019-TSQL' को एक सुरक्षित तर्क के रूप में चुना है और लॉगिन 'मानवेंद्र' के लिए नीचे दिए गए कथन को निष्पादित किया है।

--Display few specific permissions for login ‘manvendra’ on database ‘AdventureWorksDW2019-TSQL’
EXECUTE AS LOGIN ='manvendra'
GO
SELECT HAS_PERMS_BY_NAME('AdventureWorksDW2019-TSQL', 'DATABASE', 'ANY') AS [DB Access],
HAS_PERMS_BY_NAME('AdventureWorksDW2019-TSQL', 'DATABASE', 'CREATE TABLE') AS [CREATE TABLE],
HAS_PERMS_BY_NAME('AdventureWorksDW2019-TSQL', 'DATABASE', 'CREATE PROCEDURE') AS [CREATE PROCEDURE],
HAS_PERMS_BY_NAME('AdventureWorksDW2019-TSQL', 'DATABASE', 'INSERT') AS [INSERT Access],
HAS_PERMS_BY_NAME('AdventureWorksDW2019-TSQL', 'DATABASE', 'SELECT') AS [SELECT Access]

उसी लॉगिन 'मानवेंद्र' को इस डेटाबेस 'AdventureWorks2019-TSQL' पर INSERT और SELECT संचालन की अनुमति है

इसी तरह, हम अपने लॉगिन के लिए अलग-अलग डेटाबेस के लिए अनुमति की जांच करने के लिए उपरोक्त टी-एसक्यूएल स्टेटमेंट चला सकते हैं। आउटपुट दिखाता है कि मेरे पास सभी अनुमतियों तक पहुंच है।

आप ऊपर जा सकते हैं और उपरोक्त सिस्टम SQL सर्वर सुरक्षा फ़ंक्शन का उपयोग करके किसी भी प्रिंसिपल के लिए अन्य डेटाबेस-स्तरीय अनुमति की जांच कर सकते हैं।

केस 3 का उपयोग करें:ऑब्जेक्ट-लेवल अनुमतियां जांचें

यह उपयोग मामला डेटाबेस के भीतर ऑब्जेक्ट-स्तरीय अनुमतियों का उपयोग करके दिखाता है। फिर से, आप सुरक्षित वर्ग 'OBJECT' के लिए सभी उपलब्ध अनुमतियों को सूचीबद्ध करने के लिए नीचे दिए गए T-SQL स्टेटमेंट को चला सकते हैं। मैंने सिस्टम फ़ंक्शन sys.fn_builtin_permissions में ऑब्जेक्ट स्तर की अनुमति सूची प्रदर्शित करने के लिए WHERE क्लॉज का उपयोग किया है।

--Check all object level permissions
SELECT class_desc,permission_name FROM sys.fn_builtin_permissions(default)
WHERE class_desc ='OBJECT'

यहाँ सुरक्षित वर्ग वस्तु के लिए अनुमतियों की सूची है।

अब, मैं किसी भी लॉगिन खाते के लिए किसी विशिष्ट ऑब्जेक्ट पर नीचे दी गई अनुमतियों की जांच करने जा रहा हूं और देखूंगा कि क्या उस खाते में नीचे दिए गए कार्यों को करने की पहुंच है।

  • सम्मिलित करें
  • चुनें
  • हटाएं
  • परिभाषा देखें

मैंने डेटाबेस ऑब्जेक्ट 'dbo.dimAccount' को सुरक्षित, ऑब्जेक्ट को एक सुरक्षित वर्ग के रूप में, और उपरोक्त अनुमतियों को अनुमति तर्क के रूप में उपयोग किया है। अनुमति विवरण प्रदर्शित करने के लिए नीचे दिए गए कथनों को चलाएँ।

--Check some specific object level permissions for your own login
SELECT HAS_PERMS_BY_NAME('[dbo].[DimAccount]', 'OBJECT', 'INSERT') AS [Insert Permission],
HAS_PERMS_BY_NAME('[dbo].[DimAccount]', 'OBJECT', 'SELECT') AS [Select Permission],
HAS_PERMS_BY_NAME('[dbo].[DimAccount]', 'OBJECT', 'DELETE') AS [DELETE Permission],
HAS_PERMS_BY_NAME('[dbo].[DimAccount]', 'OBJECT', 'VIEW DEFINITION') AS [VIEW DEFINITION Access]

चूंकि मैं इस उदाहरण पर एक sysadmin हूं, मेरा खाता किसी भी स्तर पर किसी भी अनुमति के लिए 1 लौटा रहा है। इसका मतलब है कि मेरे पास पूरी अनुमति है, और इसे नीचे दिए गए बयानों को चलाकर भी सत्यापित किया जा सकता है।

लॉगिन 'मानवेंद्र' के लिए अनुमतियों की जांच के लिए नीचे दिए गए कथन को चलाएँ।

--Check some specific object level permissions for another login ‘manvendra’
EXECUTE AS USER ='manvendra'
GO
USE [AdventureWorksDW2019-TSQL]
GO
SELECT HAS_PERMS_BY_NAME('[dbo].[DimAccount]', 'OBJECT', 'INSERT') AS [Insert Permission],
HAS_PERMS_BY_NAME('[dbo].[DimAccount]', 'OBJECT', 'SELECT') AS [Select Permission],
HAS_PERMS_BY_NAME('[dbo].[DimAccount]', 'OBJECT', 'DELETE') AS [DELETE Permission],
HAS_PERMS_BY_NAME('[dbo].[DimAccount]', 'OBJECT', 'VIEW DEFINITION') AS [VIEW DEFINITION Access]

हम देख सकते हैं कि लॉगिन 'मानवेंद्र' के पास INSERT, SELECT और DELETE अनुमतियों तक पहुंच है, लेकिन इस खाते को 'AdventureWorksDW2019-TSQL' डेटाबेस में इस ऑब्जेक्ट की परिभाषा देखने की अनुमति नहीं है।

मुझे इस खाते के 'मानवेंद्र' के लिए डेटाबेस एडवेंचरवर्क्सडीडब्ल्यू2019-टीएसक्यूएल में ऑब्जेक्ट 'डिमअकाउंट' पर DELETE ऑपरेशन के लिए DENY एक्सेस लागू करने दें। आप इसे नीचे दी गई छवि में देख सकते हैं।

हम देख सकते हैं कि आउटपुट इंगित करता है कि लॉगिन 'मानवेंद्र' के पास केवल INSERT और SELECT स्टेटमेंट तक पहुंच है और DELETE स्टेटमेंट की अनुमति नहीं है।

उपरोक्त सिस्टम फ़ंक्शन का उपयोग करके किसी भी डेटाबेस ऑब्जेक्ट पर किसी भी लॉगिन के लिए एक्सेस के विभिन्न स्तरों की जाँच करें।

केस 4 का उपयोग करें:लॉगिन अनुमति जांचें

यह उपयोग मामला आपको यह समझने में मदद करेगा कि लॉगिन के लिए विभिन्न अनुमतियों की जांच कैसे करें। आप इस सिस्टम SQL सर्वर सुरक्षा फ़ंक्शन HAS_PERMS_BY_NAME का उपयोग करके इस प्रकार के सभी विवरण प्राप्त कर सकते हैं।

हम नीचे दिए गए टी-एसक्यूएल स्टेटमेंट को चलाकर एक विशिष्ट लॉगिन के लिए उपलब्ध सभी अनुमतियों को सूचीबद्ध कर सकते हैं।

--List all available permission for securable class ‘LOGIN’
SELECT class_desc, permission_name FROM sys.fn_builtin_permissions(default)
WHERE class_desc ='LOGIN'

सुरक्षित वर्ग 'लॉगिन' के लिए अनुमति नामों की सूची नीचे दी गई है।

मैं जाँच करूँगा कि मेरे पास नीचे दिए गए T-SQL कथनों को चलाकर लॉगिन sa पर ALTER या VEEW DEFINITION अनुमति है या नहीं। मैंने लॉगिन sa को एक सुरक्षित तर्क के रूप में, LOGIN को एक सुरक्षित वर्ग तर्क के रूप में, और ALTER &VEEW DEFINITION को इस सिस्टम फ़ंक्शन में अनुमति तर्क के रूप में उपयोग किया है।

--Check ALTER & VIEW DEFINITION permission on securable sa
SELECT HAS_PERMS_BY_NAME('sa', 'LOGIN', 'ALTER'),
HAS_PERMS_BY_NAME('sa', 'LOGIN', 'VIEW DEFINITION')

एक sysadmin के रूप में, मेरे पास ये एक्सेस स्तर होंगे, और आउटपुट को उनके मान को 1 के रूप में वापस करके भी मान्य किया जाता है।

आइए देखें कि लॉगिन 'मानवेंद्र' को लॉगिन सा की परिभाषा बदलने या देखने की अनुमति है या नहीं।

--Check ALTER & VIEW DEFINITION permission on securable sa for principal ‘manvendra’
EXECUTE AS USER ='manvendra'
GO

SELECT HAS_PERMS_BY_NAME('sa', 'LOGIN', 'ALTER'),
HAS_PERMS_BY_NAME('sa', 'LOGIN', 'VIEW DEFINITION')

आउटपुट शून्य (0) के रूप में लौटा, जिसका अर्थ है कि लॉगिन 'मानवेंद्र' को ALTER या VEEW DEFINITION लॉगिन sa की अनुमति नहीं है।

विभिन्न लॉगिन के लिए एक्सेस स्तरों को जांचने और समझने के लिए इस सिस्टम फ़ंक्शन का उपयोग करें।

केस 5 का उपयोग करें:अन्य अनुमतियां जांचें

यहां, मैं SCHEMA और FULLTEXT CATALOG, ENDPOINT, AVAILABILITY GROUP, आदि जैसे कुछ अन्य सुरक्षित वर्गों को कवर करूंगा।

आइए पहले नीचे दिए गए स्टेटमेंट को चलाकर SCHEMA और FULLTEXT CATALOG सिक्योरेबल क्लास के लिए उपलब्ध सभी अनुमतियों को सूचीबद्ध करें:

--List all available permission for securable class ‘SCHEMA’ & ‘FTCatalog’. FTCatalog is full text catalog.
SELECT class_desc, permission_name FROM sys.fn_builtin_permissions(default)
WHERE class_desc='SCHEMA' OR
class_desc= 'FULLTEXT CATALOG'

अगला कदम यह पहचानना है कि हम अपने प्रिंसिपल की जांच के लिए किस अनुमति की तलाश कर रहे हैं। मैं सुरक्षित वर्ग स्कीमा के लिए DELETE और ALTER अनुमतियों की जाँच करने जा रहा हूँ और सुरक्षित वर्ग FULLTEXT कैटलॉग पर ALTER और VEEW DEFINITION अनुमति की जाँच करने जा रहा हूँ।

हमें उनके संबंधित सिक्योरेबल्स को पास करने की आवश्यकता है जैसे मैंने SCHEMA सिक्योरेबल क्लास के लिए dbo पास किया है और नीचे दिए गए स्टेटमेंट में सिक्योरेबल क्लास FULLTEXT CATALOG के लिए FTCatalog पास किया है।

अपने लॉगिन की अनुमति प्राप्त करने के लिए नीचे दिए गए टी-एसक्यूएल स्टेटमेंट को चलाएँ।

--List below permissions for securable class ‘SCHEMA’ & ‘FTCatalog’. 
SELECT HAS_PERMS_BY_NAME('dbo', 'SCHEMA', 'DELETE') AS [Schema Deletion Access],
HAS_PERMS_BY_NAME('dbo', 'SCHEMA', 'ALTER') AS [Schema Alter Access],
HAS_PERMS_BY_NAME('[FTCatalog]', 'FULLTEXT CATALOG', 'ALTER') AS [FTC Alter Access],
HAS_PERMS_BY_NAME('[FTCatalog]', 'FULLTEXT CATALOG', 'VIEW DEFINITION') AS [VIEW DEFINITION]

नीचे दिए गए आउटपुट से पता चलता है कि लॉगिन 'मानवेंद्र' के पास केवल SCHEMA विलोपन तक पहुँच है और बाकी पहुँचों को अस्वीकार या निरस्त कर दिया गया है।

निष्कर्ष

मैंने इस लेख में किसी भी प्रिंसिपल के लिए कई सुरक्षित कक्षाओं के लिए विभिन्न अनुमतियों की जांच करने के लिए चरण-दर-चरण प्रक्रिया की व्याख्या की है। आप अपनी अनुमति जाँच आवश्यकताओं को पूरा करने के लिए इस सिस्टम SQL सर्वर सुरक्षा फ़ंक्शन का भी उपयोग और उपयोग कर सकते हैं। कृपया इस लेख को साझा करें और टिप्पणी अनुभाग में अपनी प्रतिक्रिया दें ताकि हम सुधार कर सकें।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL:वेरिएबल के आधार पर डायनेमिक कॉलम नाम चुनें

  2. अधिक उन्नत क्वेरी चलाते समय ऑब्जेक्ट बंद होने पर ऑपरेशन की अनुमति नहीं है

  3. मैं PHP पीडीओ के साथ मैक से एसक्यूएल सर्वर से कैसे जुड़ सकता हूं?

  4. SQL सर्वर रोलअप के साथ योग - लेकिन केवल अंतिम सारांश?

  5. एक्सएमएल के लिए एसक्यूएल के साथ एचटीएमएल टेबल बनाएं