2010-01-05 21 views
19

मेरे पास एक SQL कार्य है जिसे एक पंक्ति को अद्यतन करने के लिए एक सरल अद्यतन चलाने की आवश्यकता है।एसएसआईएस एसक्यूएल टास्क - "पैरामीटर नाम अपरिचित है"

मैं करने के लिए SQLStatement निर्धारित किया है: पैरामीटर मानचित्रण पेज मैं चर मैं सही मान हैं जानते हैं कि करने के लिए पैरामीटर 0 और पैरामीटर 1 सेट दी पर

update agency set AgencyLastBatchSeqNo = ? where agencyID = ? 

। मैंने पैरामीटर नाम मानों को सही तरीके से भी सेट किया है।

डेटाबेस में, कॉलम एजेंसीलास्टबैचसेकनो एक int है, एजेंसीआईडी ​​एक बड़ी int है। क्या किसी के पास एसएसआईएस में डेटा प्रकार के मानचित्र को खोजने का संदर्भ है? मैंने बड़े int के लिए int और लंबे समय के लिए लघु पर अनुमान लगाया है।

जब मैं काम मैं निम्नलिखित त्रुटि मिलती है चलाएँ:

[Execute SQL Task] Error: Executing the query "update agency set AgencyLastBatchSeqNo = ? where AgencyID = ?" failed with the following error: "Parameter name is unrecognized.". Possible failure reasons: Problems with the query, "ResultSet" property not set correctly, parameters not set correctly, or connection not established correctly.

किसी को भी कृपया क्या गलत हो सकता है सुझाव है कि सकता है?

धन्यवाद

रोब।

उत्तर

59

इसका उत्तर पैरामीटर मैपिंग स्क्रीन में पैरामीटर नाम मान को बदलना है।

निम्न क्वेरी

SELECT Id, AnimalName FROM dbo.Farm WHERE Farm_id = ? 

मेरी पैरामीटर मान लिया जाये कि यह देखते हुए एक पूर्णांक चर नामित उपयोगकर्ता :: Farm_id
पैरामीटर मानचित्रण स्क्रीन

Variable Name - User::Farm_id 
Direction  - Input 
Data Type  - LONG 
Parameter Name - 0 
Parameter Size - -1 

मूलतः पैरामीटर नाम पर निम्न मान चुनें होगा "न्यू पैरामीटर नाम" बनें। बस इसे अपने परिवर्तनीय मार्कर ("?") की क्रमिक स्थिति में बदलें

+2

+1 मुझे बचाया! आपका बहुत बहुत धन्यवाद! – Legend

+0

धन्यवाद जॉन आपका जवाब महान था, :) –

+0

मैं पैरामीटर नाम (सदमे डरावनी) में पैरामीटर का नाम डाल रहा था और मेरे बालों को फाड़ रहा था! – jhowe

0

सुनिश्चित करें कि आप अपने मूल्य उद्धृत कर रहे हैं, और आपके पास अपने कॉलम नामों में टाइपो नहीं हैं।

1

SSIS data types देखें।

int = DT_I4 (4 byte integer) = Int32 variable 
bigint = DT_I8 (8 byte integer) = Int64 variable 
3

एक चीज जिसका आप उल्लेख नहीं करते हैं वह आपका कनेक्शन प्रकार है। मुझे लगता है कि आप ADO.Net का उपयोग नहीं कर रहे हैं क्योंकि उस मामले में पैरामीटर अंकन एक नहीं है? अन्य प्रकार के कनेक्शन के लिए, पैरामीटर को निम्नानुसार नामित किया गया है:
एडीओ (ADO.Net नहीं) कनेक्शन: पैरामीटर नाम पैराम 1, पैराम 2 हैं ...
ओडीबीसी कनेक्शन: पैरामीटर नाम 1,2,3 ... ओएलडीडीबी कनेक्शन: पैरामीटर नाम 0,1,2 ...

परिवर्तनीय प्रकारों के लिए (वे एसएसआईएस के किसी भी अन्य क्षेत्र की तुलना में पैरामीटर मैपिंग सेक्शन में भिन्न हैं) मैं आम तौर पर लंबे समय तक इंट का उपयोग करता हूं और मैं आमतौर पर छोड़ देता हूं लंबाई -1 सेट। मेरा मानना ​​है कि एक लंबा इंट और बिगिंट दोनों के लिए काम करेगा।

2

यदि आप 1 से अधिक पैरामीटर का उपयोग कर रहे हैं तो निष्पादित एसक्यूएल कार्य विंडो में पैरामीटर मैपिंग पर जाएं और पैरामीटर नाम 0,1,2 पर सेट करें , 3 .... पैरामीटर की संख्या और पैरामीटर आकार -1 के आधार पर .. यह आपकी समस्या को हल करने में सहायक होना चाहिए।

0

पैरामीटर मैपिंग को परिभाषित करते समय पैरामीटर नाम के बाद किसी भी पिछला रिक्त स्थान इस संदेश का कारण बन सकता है।

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