ऑब्जेक्ट के लिए अनसुलझे संदर्भ [INFORMATION_SCHEMA]। [TABLES]


99

मैंने एक यूडीएफ बनाया है जो [INFORMATION_SCHEMA].[TABLES]दृश्य को एक्सेस करता है:

CREATE FUNCTION [dbo].[CountTables]
(
    @name sysname
)
RETURNS INT
AS
BEGIN
    RETURN
    (
        SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = @name
    );
END

दृश्य स्टूडियो के भीतर, दृश्य के लिए स्कीमा और नाम दोनों को चेतावनी के साथ चिह्नित किया गया है:

SQL71502: फ़ंक्शन: [dbo]। [काउंटटेबल्स] में ऑब्जेक्ट [INFORMATION_SEMEMA] [[टैब] के लिए एक अनसुलझे संदर्भ है।

मैं अभी भी डेटाबेस प्रोजेक्ट को बिना किसी समस्या के प्रकाशित कर सकता हूं, और UDF सही ढंग से चलता है। IntelliSense मेरे लिए दृश्य का नाम बताता है, इसलिए इसके साथ कोई समस्या नहीं है।

मैंने sys.objectsइस दृश्य के बजाय उपयोग करने के लिए कार्यान्वयन को बदलने की कोशिश की , लेकिन मुझे इस दृश्य के लिए भी यही चेतावनी दी गई।

मैं इस चेतावनी को कैसे हल कर सकता हूं?

जवाबों:


180

डेटाबेस संदर्भ इसमें जोड़ें master:

  1. प्रोजेक्ट के तहत, राइट-क्लिक करें संदर्भ
  2. चुनें डेटाबेस जोड़ें संदर्भ ...
  3. सिस्टम डेटाबेस का चयन करें ।
  4. सुनिश्चित करें कि मास्टर का चयन किया गया है।
  5. ओके दबाएं ।

ध्यान दें कि VS को अद्यतन करने में कुछ समय लग सकता है।


6
और सिर्फ एक चेतावनी - अगर किसी ने उन SSDT को एक अलग रास्ते में स्थापित किया है, तो आपके पास मुद्दे हो सकते हैं। हम अपनी आखिरी परियोजना में भाग गए, जहां कुछ में E: ड्राइव और अन्य में C: ड्राइव था। हमने उस संदर्भ फ़ाइल को कॉपी कर लिया और उसे एक साझा स्थान पर रख दिया ताकि हम इसका संदर्भ ले सकें। \ SharedSchemas \ master.dpac। यह शायद अब हल हो गया है, लेकिन पहली रिलीज में एक मुद्दा था।
पीटर स्कूट

पीटर शॉट के यहाँ एक बिंदु है। यह आमतौर पर एक अच्छा विचार है कि रेफर किए गए dacpac फाइलों को कॉपी करके समाधान के अंदर कहीं और उपयोग करें।
वेलसेल ओजडेमिर

1
मेरे लिए यह कहता है "इस सिस्टम डेटाबेस का एक संदर्भ आपकी परियोजना में पहले से मौजूद है।" मैं अब फंस गया हूँ!
orad

1
बस अगले व्यक्ति के लिए कुछ पवित्रता को बचाने के लिए - विश्वास करो या नहीं छोड़ने पर भी वीएस को यह छड़ी करने के लिए पर्याप्त नहीं था - मुझे रिबूट करना पड़ा और फिर सेटिंग ने काम करना शुरू कर दिया। आप विज़ुअल स्टूडियो विकल्प ... एसक्यूएल सर्वर टूल्स ... ऑनलाइन एडिटिंग ... को "सिस्टम व्यू और मास्टर डेटाबेस ऑब्जेक्ट्स के संदर्भ को हल करें" सक्षम करने की इच्छा कर सकते हैं।
NYCdotNet

मैं दृश्य स्टूडियो 2017 के तहत एक ही समस्या आ रही है और मैं "डेटाबेस संदर्भ" संदर्भ सूची के अंतर्गत नहीं दिख रहा है
scarl

3

हमारी परियोजना में, हमारे पास पहले से ही मास्टर का संदर्भ है, लेकिन हमारे पास यह मुद्दा था। यहाँ हमें मिली त्रुटि थी:

SQL71502: Procedure: [Schema].[StoredProc1] has an unresolved reference to object [Schema].[Table1].[Property1].

संदर्भ त्रुटि को हल करने के लिए, तालिका sql फ़ाइल पर, राइट क्लिक गुण और सत्यापित करें BuildSettings बिल्ड पर सेट हैं।

इसे बदलते हुए इसे तय किया।


2

सैम ने कहा कि ऐसा करने का सबसे अच्छा तरीका है।
हालाँकि, यदि आपके पास एक परिदृश्य है जिसे आपको एक मशीन से dacpac को तैनात करने की आवश्यकता है जो उस विशिष्ट स्थान पर उस संदर्भ में नहीं है, तो आप मुसीबत में पड़ सकते हैं। दूसरा तरीका यह है कि अपनी .project फ़ाइल को खोलें और सुनिश्चित करें कि निम्न टैग में falseआपके द्वारा चलाए जा रहे बिल्ड कॉन्फ़िगरेशन के लिए मान है ।

<TreatTSqlWarningsAsErrors>false</TreatTSqlWarningsAsErrors>

इस तरह आपको अपनी परियोजना के लिए एक संदर्भ जोड़ने की आवश्यकता नहीं है।


13
यह एक अंतिम उपाय होना चाहिए, क्योंकि आप sql त्रुटियों पर प्रतिक्रिया खो देते हैं!
जोवेन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.