2011-10-04 20 views
12

के लिए अनसुलझा संदर्भ हमारे पास कुछ समानार्थी शब्द हैं जिनका उपयोग अलग डेटाबेस (जो एक ही सर्वर पर है) में संदर्भित करने के लिए किया जा रहा है।विजुअल स्टूडियो 2010 डाटाबेस प्रोजेक्ट - एक समानार्थी

वास्तविक समानार्थी शब्द ठीक हैं, लेकिन संग्रहीत procs/उपयोगकर्ता परिभाषित कार्यों संदर्भ कहा कि समानार्थी शब्द निम्न त्रुटि दिखाने:

Error 13 SQL03006: Column: [dbo].[GetCocosIndexSearched].[User ID] contains an unresolved reference to an object. Either the object does not exist or the reference is ambiguous because it could refer to any of the following objects: [dbo].[AuditType].[e]::[LOGIN_ID], [dbo].[EMPLOYEES].[e]::[LOGIN_ID], [dbo].[EMPLOYEES].[LOGIN_ID] or [dbo].[SearchCIBirthsRequest].[e]::[LOGIN_ID]. C:\VSTS\Corporate\WARS Audit\MAIN\Source\RBDM.Audit.Database\Schema Objects\Schemas\dbo\Programmability\Functions\GetCocosIndexSearched_1.function.sql 21 5 RBDM.Audit.Database 

[dbo].[GetCocosIndexSearched] एक समारोह है और [dbo].[EMPLOYEES] पर्याय है।

ये सभी वास्तविक डेटाबेस में ठीक काम करते हैं - समस्या डेटाबेस प्रोजेक्ट के साथ पूरी तरह से निहित है। मैं (या तो एक नया डेटाबेस परियोजना या एक डाटाबेस परियोजना स्कीमा के माध्यम से) अलग डाटाबेस के लिए एक संदर्भ जोड़ने की कोशिश की है, लेकिन फिर पर्याय और संदर्भ तालिका के साथ संघर्ष मुद्दे हैं:

Error 7 SQL04105: The model already has an element that has the same name dbo.EMPLOYEES. C:\VSTS\Corporate\WARS Audit\MAIN\Source\RBDM.Audit.Database\Schema Objects\Schemas\dbo\Synonyms\EMPLOYEES.synonym.sql 2 1 RBDM.Audit.Database 

कोई भी विचार? एक और स्टैक ओवरफ्लो पोस्ट में उल्लिखित एक वर्कअराउंड है जो Script.PostDeployment.sql में निर्माण स्क्रिप्ट को रखने के बारे में बात करता है - मुझे थोड़ा सा हैकी लगता है।

उत्तर

8

ऐसा इसलिए होता है क्योंकि कॉलर डेटाबेस में आपको निर्भर डेटाबेस का संदर्भ जोड़ना होगा और डेटाबेस नाम के लिए भी एक मान निर्दिष्ट करना होगा। नीचे देखो:

CREATE SYNONYM [dbo].[mytable] FOR [$(MasterDatabase)].[dbo].[mytable] 
0

मुझे लगता है कि के रूप में एक ही सर्वर पर एक और डेटाबेस को इंगित तालिका समानार्थी शब्दों के साथ एक ही समस्या है:

Database reference

तो आप निम्नलिखित कोड का उपयोग कर अपने पर्याय बना सकते हैं मुख्य डेटाबेस संदर्भ जोड़ना लगभग सबकुछ के लिए काम करता है लेकिन इन-लाइन टेबल-मूल्यवान फ़ंक्शंस। जैसे ही आप इस तरह के एक समारोह में एक पर्याय

create synonym syn.Table for [$(MyDb)].[dbo].[Table]; 

इस्तेमाल करने की कोशिश के रूप में त्रुटि वापस आ गया है। एसएसडीटी 2013 अपडेट 4 मेरा संस्करण है। यह अविश्वसनीय है कि 2016 में ऐसी त्रुटि अभी भी हमारे साथ है। समानार्थी शब्दों को संभालना निर्बाध होना चाहिए क्योंकि यह निर्भरताओं को सारणित करने के लिए प्रमुख तंत्र है। विश्वास नहीं कर सकता कि यह अभी भी सही नहीं किया गया है।