खोज…


डेटाबेस पर CLR सक्षम करें

सीएलआर प्रक्रियाएं डिफ़ॉल्ट रूप से सक्षम नहीं हैं। सीएलआर को सक्षम करने के लिए आपको निम्नलिखित प्रश्नों को चलाने की आवश्यकता है:

sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
sp_configure 'clr enabled', 1;
GO
RECONFIGURE;
GO

इसके अलावा, अगर कुछ सीएलआर मॉड्यूल को बाहरी उपयोग की आवश्यकता होती है, तो आपको अपने डेटाबेस में चालू करने के लिए ट्रस्टी संपत्ति सेट करनी चाहिए:

ALTER DATABASE MyDbWithClr SET TRUSTWORTHY ON

जोड़ने .dll जिसमें Sql CLR मॉड्यूल शामिल हैं

.Net भाषाओं में लिखित कार्यविधियाँ, फ़ंक्शंस, ट्रिगर और प्रकार। Dll फ़ाइलों में संग्रहीत किए जाते हैं। एक बार जब आप। Dll फ़ाइल बनाते हैं, जिसमें आपको CLR प्रक्रियाएँ होती हैं, तो आपको इसे SQL सर्वर में आयात करना चाहिए:

CREATE ASSEMBLY MyLibrary
FROM 'C:\lib\MyStoredProcedures.dll'
    WITH PERMISSION_SET = EXTERNAL_ACCESS

PERMISSION_SET डिफ़ॉल्ट अर्थ से सुरक्षित है कि .dll में कोड को बाहरी संसाधनों (जैसे फाइलें, वेब साइट, अन्य सर्वर) तक पहुंचने की अनुमति की आवश्यकता नहीं है, और यह मूल कोड का उपयोग नहीं करेगा जो मेमोरी तक पहुंच सकता है।

PERMISSION_SET = EXTERNAL_ACCESS का उपयोग उन विधानसभाओं को चिह्नित करने के लिए किया जाता है जिनमें कोड होते हैं जो बाहरी संसाधनों तक पहुंच बनाएंगे।

आप sys.assemblies दृश्य में वर्तमान सीएलआर विधानसभा फ़ाइलों के बारे में जानकारी पा सकते हैं:

SELECT *
FROM sys.assemblies asms
WHERE is_user_defined = 1

SQL सर्वर में CLR फंक्शन बनाएं

यदि आपने .Net फ़ंक्शन बनाया है, तो उसे .dll में संकलित किया है, और एसक्यूएल सर्वर में एक असेंबली के रूप में आयात किया है, आप उपयोगकर्ता-परिभाषित फ़ंक्शन बना सकते हैं जो उस असेंबली में फ़ंक्शन को संदर्भित करता है:

CREATE FUNCTION dbo.TextCompress(@input nvarchar(max)) 
RETURNS varbinary(max) 
AS EXTERNAL NAME MyLibrary.[Name.Space.ClassName].TextCompress 

आपको इनपुट पैरामीटर के साथ फ़ंक्शन और हस्ताक्षर का नाम निर्दिष्ट करना होगा जो कि .Net फ़ंक्शन से मेल खाते हैं। बाहरी नाम के खंड में आपको असेंबली का नाम, नाम स्थान / वर्ग का नाम निर्दिष्ट करना होगा, जहां यह फ़ंक्शन रखा गया है और उस विधि का नाम कक्षा में है जिसमें कोड है जो फ़ंक्शन के रूप में सामने आएगा।

आप निम्नलिखित क्वेरी का उपयोग करके सीएलआर कार्यों के बारे में जानकारी प्राप्त कर सकते हैं:

SELECT * FROM dbo.sysobjects WHERE TYPE ='FS'

SQL सर्वर में CLR उपयोगकर्ता-परिभाषित प्रकार बनाएँ

यदि आपके पास .Net वर्ग है जो कुछ उपयोगकर्ता-परिभाषित प्रकार का प्रतिनिधित्व करता है, तो इसे .dll में संकलित किया है, और इसे एसक्यूएल सर्वर में असेंबली के रूप में आयात किया है, आप उपयोगकर्ता-परिभाषित फ़ंक्शन बना सकते हैं जो इस वर्ग को संदर्भित करता है:

CREATE TYPE dbo.Point
EXTERNAL NAME MyLibrary.[Name.Space.Point]

आपको उस प्रकार का नाम निर्दिष्ट करना होगा जिसका उपयोग टी-एसक्यूएल प्रश्नों में किया जाएगा। बाहरी नाम खंड में आपको असेंबली का नाम, नाम स्थान और वर्ग का नाम निर्दिष्ट करना होगा।

SQL सर्वर में CLR प्रक्रिया बनाएँ

यदि आपने किसी वर्ग में .Net विधि बनाई है, तो उसे .dll में संकलित किया है, और एसक्यूएल सर्वर में एक असेंबली के रूप में आयात किया है, आप उपयोगकर्ता-निर्धारित संग्रहीत कार्यविधि बना सकते हैं जो उस विधानसभा में संदर्भ विधि:

CREATE PROCEDURE dbo.DoSomethng(@input nvarchar(max)) 
AS EXTERNAL NAME MyLibrary.[Name.Space.ClassName].DoSomething

आपको इनपुट पैरामीटर के साथ प्रक्रिया और हस्ताक्षर का नाम निर्दिष्ट करना होगा जो .Net विधि से मेल खाते हैं। बाहरी नाम के खंड में आपको असेंबली का नाम, नाम स्थान / वर्ग का नाम निर्दिष्ट करना होगा जहां यह प्रक्रिया रखी गई है और उस विधि का नाम कक्षा में है जिसमें कोड है जिसे प्रक्रिया के रूप में उजागर किया जाएगा।



Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow