2009-11-11 13 views
7

के उपयोग के कारण विफल हो गई है मेरे पास एक संग्रहीत प्रक्रिया है जो एक XML पैरामीटर लेती है और डेटा को एकाधिक तालिकाओं में सम्मिलित करती है। यदि मैं एक एसएसएमएस क्वेरी विंडो का उपयोग कर संग्रहीत प्रक्रिया को डेटाबेस में चलाता हूं, तो सब कुछ ठीक काम करता है। हालांकि, हम यह है कि डेटाबेस के लिए संग्रहित प्रक्रियाओं को तैनात करने के लिए किया जाता है एक कस्टम स्थापना कार्यक्रम है, और जब यह प्रयोग किया जाता है, एसपी के निष्पादन इस त्रुटि के साथ विफल:एसक्यूएल सर्वर संग्रहीत प्रक्रिया एक्सएमएल/ANSI_NULLS, QUOTED_IDENTIFIER विकल्प

INSERT failed because the following SET options have incorrect settings: 
'ANSI_NULLS, QUOTED_IDENTIFIER'. Verify that SET options are correct for use with 
indexed views and/or indexes on computed columns and/or query notifications 
and/or xml data type methods. 

कस्टम स्थापना कार्यक्रम सही सेटिंग्स का उपयोग नहीं करता संग्रहीत प्रक्रियाओं में स्क्रिप्टिंग करते समय।

इन (सेट ARITHABORT पर; सेट QUOTED_IDENTIFIER पर; सेट ANSI_NULLS ON) की स्थापना एसपी के भीतर कोई प्रभाव नहीं है:

मैं भी सिर्फ कोड में एसपी कॉल करने से पहले खुले कनेक्शन के लिए ये विकल्प सेट की कोशिश की है । यह फिर से वांछित प्रभाव नहीं है।

ऐसा प्रतीत होता है डेटाबेस जबकि एसपी डेटाबेस करने के लिए चलाया जा रहा है के लिए कनेक्शन पर सेटिंग्स क्या मायने रखती हैं कि, नहीं सेटिंग्स जब एसपी प्रयोग किया जाता है।

मैंने एसएसएमएस विकल्पों में इन सेटिंग्स के साथ खेलकर प्रयोग किया है, और यह मामला प्रतीत होता है। मैं बस किसी तरह की पुष्टि करने के लिए कि यह निश्चित रूप से मामला है (यदि वहाँ एक तरह से चारों ओर मैं यह जानकर बहुत खुशी होगी है, लेकिन मुझे उम्मीद है नहीं कर रहा हूँ)

दुर्भाग्य संस्थापक कार्यक्रम में फेरबदल के लिए एक विकल्प नहीं है मुझे वर्तमान समय में, इसलिए मैं कुछ हफ्तों के काम को वापस रोल करने की सोच रहा हूं; तो अगर मुझे ऐसा करना है तो मैं वास्तव में सुनिश्चित होना चाहता हूं (और मुझे वापस करने के लिए कुछ सबूत हैं) कि यह एकमात्र विकल्प है

उत्तर

11

क्रिएट या अल्टर समय पर उन सेटिंग्स के साथ लागू सेटिंग्स और रनटाइम पर अनदेखा की जाती हैं।

एसएसएमएस में डिफ़ॉल्ट रूप से सही सेटिंग्स हैं (इसलिए sqlcmd, osql आदि करता है)।

से BOL, CREATE PROC, "Using SET Options"

The Database Engine saves the settings of both SET QUOTED_IDENTIFIER and SET ANSI_NULLS when a Transact-SQL stored procedure is created or modified. These original settings are used when the stored procedure is executed. Therefore, any client session settings for SET QUOTED_IDENTIFIER and SET ANSI_NULLS are ignored when the stored procedure is running. Other SET options, such as SET ARITHABORT, SET ANSI_WARNINGS, or SET ANSI_PADDINGS are not saved when a stored procedure is created or modified.

+1

धन्यवाद, कि एकदम सही है – DannykPowell

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