2016-01-13 9 views
6

का अनसुलझा संदर्भ है, मैं विजुअल स्टूडियो 2013 का उपयोग करके एक नया एसक्यूएल सीएलआर बना रहा हूं और प्रोजेक्ट प्रॉपर्टीज में डिफॉल्ट स्कीमा को 'डीसीएएसएम' ('डीबीओ' 'पर सेट किया गया है। इस प्रकार जब मैं यह परिवर्तन करने और इस परियोजना के पुनर्निर्माण वी.एस. एक एसक्यूएल फ़ाइल उत्पन्न: यदि मैं डिफ़ॉल्ट स्कीमा वापस करने के लिए बदलवीएस एसक्यूएलसीएलआर: फंक्शन एक्स में स्कीमा वाई

Error 1 SQL71501: Function: [decASM].[ExecFoxPro_SayHello] has an unresolved reference to Schema [decASM]. 
Error 2 SQL71501: Function: [decASM].[GetAllowedPaths] has an unresolved reference to Schema [decASM]. 
Error 3 SQL71501: Function: [decASM].[GetTableRowCount] has an unresolved reference to Schema [decASM]. 

:

-------------------------------------------------------------------------------- 
--  This code was generated by a tool. 
-- 
--  Changes to this file may cause incorrect behavior and will be lost if 
--  the code is regenerated. 
-------------------------------------------------------------------------------- 

CREATE FUNCTION [decASM].[ExecFoxPro_SayHello] (@name [nvarchar](MAX)) 
RETURNS [nvarchar](MAX) 
AS EXTERNAL NAME [dcFoxProAssy].[UserDefinedFunctions].[ExecFoxPro_SayHello]; 

GO 

CREATE FUNCTION [decASM].[GetAllowedPaths] (@serviceUrl [nvarchar](MAX)) 
RETURNS [nvarchar](MAX) 
AS EXTERNAL NAME [dcFoxProAssy].[UserDefinedFunctions].[GetAllowedPaths]; 

GO 

CREATE FUNCTION [decASM].[GetTableRowCount] (@serviceUrl [nvarchar](MAX), @foxProPath [nvarchar](MAX), @tableName [nvarchar](MAX)) 
RETURNS [nvarchar](MAX) 
AS EXTERNAL NAME [dcFoxProAssy].[UserDefinedFunctions].[GetTableRowCount]; 

GO 

प्रत्येक बनाएं समारोह के कॉल में कोई त्रुटि है 'डीबीओ', परियोजना सफलतापूर्वक बनाता है। मैंने प्रोजेक्ट गुणों और Google के माध्यम से खोज की है लेकिन 'decASM' के संदर्भ को जोड़ने का कोई उल्लेख नहीं है।

उत्तर

13

आपको एक अलग एसएसडीटी ऑब्जेक्ट के रूप में भी स्कीमा बनाने की आवश्यकता है। यह आपके द्वारा स्वचालित रूप से यह निर्दिष्ट करके नहीं बनाया जाएगा कि आप इसे अपने SQLCLR ऑब्जेक्ट्स के लिए उपयोग करना चाहते हैं। आप होना चाहिए में सक्षम करने के लिए:

  • अपने प्रोजेक्ट
  • टेम्पलेट एसक्यूएल सर्वर>सुरक्षा>स्कीमा का चयन करने के लिए कहीं भी नया आइटम (नियंत्रण + शिफ्ट + एक) जोड़ें
  • आइटम/फ़ाइल का नाम: decASM
  • सहेजें d स्क्रिप्ट

बंद यह इस के लिए अपनी परियोजना में एक अलग एसक्यूएल फ़ाइल पैदा करेगा, एक एकल आदेश CREATE SCHEMA [decASM] युक्त, और जब आप अपने SQLCLR कोड प्रकाशित यह तैनात होगा।

चरणों कि ऊपर उल्लेख किया मुझे विजुअल स्टूडियो 2013

+0

मैं डेटाबेस में बनाने स्कीमा स्क्रिप्ट चलाने और फिर वापस SSDT परियोजना में डेटाबेस आयात करने के लिए है का उपयोग कर के लिए काम किया है? – Baahubali

+0

@ user1490835 यदि आपका वास्तविक प्रश्न स्कीमा के बारे में था तो मैं कहूंगा कि आपको पहले डीबी में इसे बनाने की आवश्यकता नहीं है। लेकिन चूंकि आप वास्तव में [एसक्यूएलसीएलआर से संबंधित कुछ] पूछ रहे हैं (http://stackoverflow.com/q/41055706/577765), मैं कहूंगा कि आपकी समस्या का स्कीमा से बिल्कुल कुछ लेना देना नहीं है। मैं इसे आपके पोस्ट किए गए प्रश्न पर संबोधित करूंगा। –

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