2008-09-23 13 views
7

मैंने जो भी पढ़ा है, वह कहता है कि एक प्रबंधित संग्रहीत प्रक्रिया करते समय, विजुअल स्टूडियो में राइट क्लिक करने के लिए और तैनाती का चयन करें। यह ठीक काम करता है, लेकिन अगर मैं इसे विजुअल स्टूडियो के बाहर कई अलग-अलग स्थानों पर तैनात करना चाहता हूं तो क्या होगा? मैंने एसक्यूएल में बनाई गई परियोजना डीएल के साथ असेंबली बनाने की कोशिश की, और जब उसने असेंबली को जोड़ा, तो उसने असेंबली से प्रक्रियाएं नहीं बनाईं। क्या किसी ने यह पता लगाया है कि विजुअल स्टूडियो का उपयोग किये बिना सीधे एसक्यूएल में इसे कैसे किया जाए?विजुअल स्टूडियो का उपयोग किये बिना मैं एक प्रबंधित संग्रहीत प्रक्रिया को कैसे तैनात करूं?

उत्तर

6

अपनी असेंबली डीएलएल फ़ाइल को अपने विभिन्न सर्वरों पर स्थानीय ड्राइव पर कॉपी करें। तब डेटाबेस के साथ अपने विधानसभा रजिस्टर:

create assembly [YOUR_ASSEMBLY] 
from '(PATH_TO_DLL)' 

... तो आप एक समारोह DLL में उपयुक्त सार्वजनिक विधि को संदर्भित बनाने के लिए:,

create proc [YOUR_FUNCTION] 
as 
external name [YOUR_ASSEMBLY].[NAME_SPACE].[YOUR_METHOD] 

[कोष्ठक का उपयोग सुनिश्चित करें, विशेष रूप से चारों ओर NAME_SPACE। नेमस्पेस में उनमें कोई भी बिंदु हो सकता है, लेकिन एसक्यूएल पहचानकर्ता नहीं कर सकते हैं, जब तक कि भागों को स्क्वायर ब्रैकेट द्वारा स्पष्ट रूप से अलग नहीं किया जाता है। जब मैं पहली बार एसक्यूएल सीएलआर का उपयोग कर रहा था तो यह कई सिरदर्द का स्रोत था।

स्पष्ट होने के लिए, [YOUR_ASSEMBLY] वह नाम है जिसे आपने SQL में परिभाषित किया है; [NAME_SPACE] DLL के अंदर .NET नेमस्पेस है जहां आपकी विधि पाई जा सकती है; और [YOUR_METHOD] बस उस नामस्थान के भीतर विधि का नाम है।

+0

मैंने पाया [इस] (https://msdn.microsoft.com/en-us/library/ms254956 (v = vs.90) .aspx: तो यहाँ किसी और को ऐसा करने के लिए कोशिश कर रहा है के लिए एक नमूना) कमांड लाइन से पूरी चीज को पूरा करने के लिए सहायक संसाधन बनने के लिए – user2426679

2

के लिए ऊपर @ kcrumley के anwser करने के लिए कुछ और अधिक विस्तार/स्पष्टीकरण जोड़ें:

[NAME_SPACE] पूरी तरह से योग्य प्रकार का नाम और न सिर्फ नाम का स्थान
- यानी अगर आपकी कक्षा एक नाम स्थान में StoredProcedures कहा जाता है My.Name.Space का, आपको [NAME_SPACE] भाग के लिए [My.Name.Space.StoredProcedures] का उपयोग करना होगा।

यदि आपकी प्रबंधित संग्रहीत प्रक्रिया किसी नामस्थान के बिना कक्षा में हैं, तो आप केवल बेयर क्लास नाम (उदा। [StoredProcedures]) का उपयोग करें।

मैंने तर्कों/पैरामीटर के साथ प्रक्रिया को जोड़ने के तरीके के बारे में कुछ भी करने के लिए संघर्ष किया।

CREATE PROCEDURE [YOUR_FUNCTION] 
( 
    @parameter1 int, 
    @parameter2 nvarchar 
) 
WITH EXECUTE AS CALLER 
AS 
EXTERNAL NAME [YOUR_ASSEMBLY].[StoredProcedures].[YOUR_FUNCTION] 
संबंधित मुद्दे

 संबंधित मुद्दे