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

EF4 - चयनित संग्रहीत कार्यविधि कोई कॉलम नहीं लौटाती है

EF उन संग्रहीत कार्यविधियों को आयात करने का समर्थन नहीं करता है जो निम्न से परिणाम सेट करते हैं:

  • गतिशील प्रश्न
  • अस्थायी टेबल

इसका कारण यह है कि प्रक्रिया को आयात करने के लिए EF को इसे निष्पादित करना होगा . ऐसा ऑपरेशन खतरनाक हो सकता है क्योंकि यह डेटाबेस में कुछ बदलावों को ट्रिगर कर सकता है। इसके कारण EF संग्रहित प्रक्रिया को निष्पादित करने से पहले विशेष SQL कमांड का उपयोग करता है:

SET FMTONLY ON

इस कमांड को निष्पादित करने से संग्रहीत कार्यविधि अपने परिणाम सेट में कॉलम के बारे में केवल "मेटाडेटा" लौटाएगी और यह अपने तर्क को निष्पादित नहीं करेगी। लेकिन चूंकि तर्क निष्पादित नहीं किया गया था, इसलिए कोई अस्थायी तालिका (या निर्मित गतिशील क्वेरी) नहीं है, इसलिए मेटाडेटा में कुछ भी नहीं है।

आपके पास दो विकल्प हैं (एक को छोड़कर जिसके लिए इन सुविधाओं का उपयोग न करने के लिए आपकी संग्रहीत कार्यविधि को फिर से लिखना आवश्यक है):

  • दिए गए जटिल प्रकार को मैन्युअल रूप से परिभाषित करें (मुझे लगता है कि इसे काम करना चाहिए)
  • हैक का उपयोग करें और इसकी शुरुआत में रखी गई संग्रहीत प्रक्रिया को जोड़ने के लिए SET FMTONLY OFF . यह आपके एसपी के बाकी कोड को सामान्य तरीके से निष्पादित करने की अनुमति देगा। बस सुनिश्चित करें कि आपका एसपी किसी भी डेटा को संशोधित नहीं करता है क्योंकि इन संशोधनों को आयात के दौरान निष्पादित किया जाएगा! सफल आयात के बाद उस हैक को हटा दें।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. एसक्यूएल सर्वर (टी-एसक्यूएल उदाहरण) में सभी अक्षम जांच बाधाओं को कैसे वापस करें

  2. रिलेशनल डेटाबेस में कस्टम फ़ील्ड के लिए डिज़ाइन पैटर्न

  3. क्या मैं जावा ईई वेबएप से विंडोज प्रमाणीकरण का उपयोग कर SQL सर्वर से कनेक्ट कर सकता हूं?

  4. Salesforce के साथ SQL सर्वर का उपयोग करने के लिए युक्तियाँ

  5. SQL सर्वर 2017 में नई सुविधाएँ (डेटाबेस इंजन)