2013-03-17 3 views
7

मैं विजुअल स्टूडियो 2012 की "डेटाबेस प्रोजेक्ट" प्रणाली सीख रहा हूं, विजुअल स्टूडियो 2012 का उपयोग अद्यतन 1, प्लस एसएसडीटी के साथ कर रहा हूं।विजुअल स्टूडियो 2012 में डेटाबेस प्रोजेक्ट और SQL डेटा टूल्स का उपयोग करना: मैं हल करने के लिए temp टेबल कैसे प्राप्त करूं?

मुझे अपने डेटाबेस में वास्तविक समस्याओं को खोजने में बहुत अच्छा लगता है, विशेष रूप से संग्रहीत प्रक्रियाओं में प्रोग्रामिंग त्रुटियां जहां किसी ने डेटाबेस तालिका से फ़ील्ड हटा दिया है, लेकिन यह नहीं किया है कि सभी संग्रहित प्रक्रिया त्रुटियों के बिना निष्पादित होती हैं । तो विजुअल स्टूडियो 2012 में "बिल्ड" कमांड के माध्यम से आपकी .sql स्क्रिप्ट का सत्यापन बहुत आसान है। मैं इसे छोड़ने से नफरत करता हूं।

लेकिन मुझे यह भी ध्यान दिया जाता है कि जब भी एक संग्रहित प्रक्रिया में #TEMPTABLE का उपयोग किया जाता है, तब भी जब "सामान्य ऑब्जेक्ट्स के लिए विस्तारित ट्रांजैक्ट-एसक्यूएल सत्यापन सक्षम करें" बंद हो जाता है, तब भी मुझे # निष्पादन योग्य फ़ील्ड संदर्भ शामिल होते हैं संग्रहीत प्रक्रियाओं में।

डाटाबेस प्रोजेक्ट एक अस्थायी तालिका की स्कीमा निर्धारित करने के लिए क्या कदम उठाता है? चूंकि परिभाषा के अनुसार मेरी अस्थायी तालिका मुख्य स्कीमा में मौजूद नहीं है, इसलिए जब मैं डेटाबेस बनाने के ठीक बाद, आयात डेटाबेस विकल्प के माध्यम से विजुअल स्टूडियो में वास्तविक उत्पादन SQL डेटाबेस आयात करता हूं, तो वे मेरे डेटाबेस प्रोजेक्ट में नहीं पहुंचते थे।

क्या मुझे "# टेम्पलेट एसक्यूएल" फाइलें बनाना और उन्हें अपनी परियोजना में जोड़ना चाहिए?

नमूना त्रुटि:

c:\dev\...\dbo\Stored Procedures\xyz.sql(95,96): Warning: SQL71502: Procedure: [dbo].[proc123] has an unresolved reference to object [#temptable1].[somefield1]. 

अगर वहाँ एक तरह से एक स्क्रिप्ट है कि प्रयोग में temptables एक बार परिभाषित शामिल करने के लिए था, और यह विभिन्न स्थानों पर जहां यह इन के बारे में पता करने के लिए आवश्यक है में शामिल करता है, तो T-SQL पूरी तरह से सत्यापित किया जाना है, यह ठीक होगा, और यदि विस्तारित सत्यापन को चालू करना मुझे लगता है कि ऐसा करना है, तो शायद कुछ भी आवश्यक नहीं होगा।

Forum post suggests this isn't possible to fix and that all I can do is effectively turn off this warning at a file level, which is kind of horrible.

A question on this same subject but for Visual Studio 2010 चलता है कि यह एक ऐसा क्षेत्र है जहां इस तकनीक सिर्फ फ्लैट विभाजित कर दिया गया है और माइक्रोसॉफ्ट इसके बारे में वर्षों के लिए जाना जाता है और इसके बारे में कुछ नहीं किया गया है। VS2012.U1 + SSDT_Dec2012 में अब कुछ बेहतर है?

+0

क्या आप अपने सत्र के दायरे में बनाए गए एक अस्थायी तालिका का जिक्र कर रहे हैं और फिर कहीं और इस्तेमाल किया गया है (1 proc में बनाया गया है, फिर किसी अन्य में उपयोग किया जाता है)? या यह सब एक proc में है? – Rich

+0

ये संग्रहीत प्रक्रिया को लागू करने से पहले बनाए गए संग्रहीत प्रक्रिया में लगभग "अदृश्य इनपुट" के रूप में उपयोग की जाने वाली अस्थायी सारणी होती है, और केवल संग्रहीत प्रक्रियाओं द्वारा संशोधित की जाती है। वास्तव में यह एक बहुत बुरा "स्कीमा गंध" हो सकता है, क्योंकि यह कहना मुश्किल है कि यह संग्रहित प्रक्रिया पूर्व-राज्य के रूप में मौजूद होने की अपेक्षा करती है। मुझे यह बहुत पसंद नहीं है, लेकिन मुझे अंदर काम करना है। इससे भी बदतर यह है कि टेम्पलेट टेबल बनाने वाले अनुप्रयोग अभी एकमात्र जगह हैं जो स्कीमा को अस्थायी तालिका के लिए परिभाषित किया गया है। मैं '- # प्राग्मा 'की तलाश में था या ... –

+0

मैंने उसी प्रश्न को माइक्रोसॉफ्ट' social.msdn' साइट पर यहां पूछा: http://social.msdn.microsoft.com/Forums/en-US/ ssdt/thread/12c0a590-4273-4861-8d00-a5804b0ea6cc –

उत्तर

3

temp तालिका के साथ कोई समस्या है, आपको तालिका मूल्यवान कार्यों का उपयोग करना चाहिए।

+0

यह सही है। और शायद माइक्रोसॉफ्ट सुरक्षित रूप से एक टेम्प-टेबल सिस्टम को लागू नहीं कर सकता है। –

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