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

सक्रिय निर्देशिका समूह सदस्यता के लिए C# clr udf

सबसे अधिक संभावना है कि उन सभी विधानसभाओं को UNSAFE . पर सेट करने की आवश्यकता होगी , विशेष रूप से तीन System.DirectoryServices* .NET Framework लाइब्रेरी जो आपने आयात की हैं। साथ ही, चूंकि आप असमर्थित .NET Framework लाइब्रेरी आयात कर रहे हैं। , आपको डेटाबेस को TRUSTWORTHY ON . पर सेट करना होगा ताकि उन्हें काम पर लाया जा सके। डेटाबेस को TRUSTWORTHY ON पर सेट करना आम तौर पर ऐसा कुछ है जिससे आप बचना चाहते हैं क्योंकि यह एक सुरक्षा जोखिम है, लेकिन इस मामले में मुझे विश्वास नहीं है कि इसे टाला जा सकता है।

उस ने कहा, मुझे यकीन नहीं है कि आपको इस फ़ंक्शन को SQLCLR में स्वयं बनाने की भी आवश्यकता है। यदि आप केवल यह जानना चाहते हैं कि क्या कोई लॉगिन (केवल विंडोज़ लॉगिन, स्पष्ट रूप से) किसी विशेष सक्रिय निर्देशिका समूह से संबंधित है, तो एक अंतर्निहित कार्य है जो चाहिए यह तुम्हारे लिए करो। IS_MEMBER फ़ंक्शन इंगित करेगा कि क्या वर्तमान लॉगिन निर्दिष्ट विंडोज समूह का सदस्य है (Domain\Group . के रूप में निर्दिष्ट) ) आपके द्वारा बनाए जा रहे फ़ंक्शन के विपरीत यह फ़ंक्शन कैसे काम करता है, इसका अंतर यह है कि यह केवल वर्तमान लॉगिन के लिए काम करता है; आप इसमें कोई मनमानी लॉगिन नहीं कर सकते हैं। लेकिन, इसके लिए किसी भी अतिरिक्त प्रयास और सुरक्षा जोखिमों की भी आवश्यकता नहीं है जो इस का हिस्सा हैं। एसक्यूएलसीएलआर समाधान। तो, कुछ विचार करने के लिए :-)।

इस उत्तर पर ओपी की टिप्पणी:

उस स्थिति में, सामान्य एक परत के बजाय डायनेमिक SQL को दो परतों को गहरा बनाएं। की तर्ज पर कुछ:

DECLARE @SQL NVARCHAR(MAX);
SET @SQL = N'
  SELECT *
  FROM   OPENQUERY([LinkedServer], N''
             SELECT *
             FROM   someResource
             WHERE  GroupName=N''''' + @Group + N'''''
             AND    ObjectName=N''''' + @Login + N''''';
                   '');
';

PRINT @SQL; -- DEBUG
EXEC (@SQL);

इस दृष्टिकोण में, क्वेरी निष्पादित हो रही है OPENQUERY डायनेमिक SQL है, लेकिन क्वेरी OPENQUERY . को दी गई है निष्पादित करना एक स्ट्रिंग शाब्दिक है।




  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. वस्तु को नहीं छोड़ा जा सका क्योंकि यह एक विदेशी कुंजी बाधा द्वारा संदर्भित है - SQL सर्वर / TSQL ट्यूटोरियल भाग 74

  3. क्या MS SQL सर्वर में 'INSERT INTO' स्क्रिप्ट उत्पन्न करने के लिए कोई निःशुल्क उपकरण हैं?

  4. टी-एसक्यूएल, टिक, टाइमस्टैम्प

  5. डेटा योग करने के लिए SQL क्वेरी