5

के कारण विफल रहा है, मैं एनएचबेर्नेट और SQL सर्वर 2005 का उपयोग करता हूं और मेरे पास मेरी एक तालिका में एक गणना कॉलम पर एक अनुक्रमणिका है। मैं अपने आवेषण से पहले SET ARITHABORT ON; का उपयोगएसक्यूएल सर्वर - INRERT 'ARITHABORT'

INSERT failed because the following SET options have incorrect settings: 'ARITHABORT'

लेकिन अभी भी यह त्रुटि है:

मेरे समस्या यह है कि जब मैं उस तालिका मैं निम्न त्रुटि प्राप्त करने के लिए एक रिकॉर्ड सम्मिलित है।

उत्तर

5
अभिकलन कॉलम के साथ

टेबल पर आवेषण के लिए, आप इन सेट विकल्प की जरूरत है:

NUMERIC_ROUNDABORT विकल्प को बंद पर सेट किया जाना चाहिए और इन विकल्पों पर सेट किया जाना चाहिए:

ANSI_NULLS 
ANSI_PADDING 
ANSI_WARNINGS 
ARITHABORT 
CONCAT_NULL_YIELDS_NULL 
QUOTED_IDENTIFIER 

कोशिश जोड़ने यह आपके सम्मिलन से पहले:

set NUMERIC_ROUNDABORT off 
set ANSI_NULLS, ANSI_PADDING, ANSI_WARNINGS, ARITHABORT, CONCAT_NULL_YIELDS_NULL, QUOTED_IDENTIFIER on 

insert ... 
+0

'आपके कनेक्शन पर' से आपका क्या मतलब है? क्या मुझे इन्हें एनएचबर्ननेट में सत्र निर्माण पर सेट करना चाहिए? मैं केवल 'ARITHABORT' को' चालू 'पर डालने, अपडेट करने और हटाने पर सेट करता हूं। –

+0

ये सत्र स्तर विकल्प हैं, इसलिए कनेक्शन पर केवल एक बार किया जाना चाहिए, लेकिन आप समस्या के बिना उन्हें कई बार सेट कर सकते हैं। अद्यतन उत्तर – muhmud

+0

देखें मैं फ्लुएंट एनएचबेर्नेट का उपयोग करता हूं। क्या आप मुझे दिखा सकते हैं कि इसे कैसे कॉन्फ़िगर करें? –

5

मैं आज इस समस्या में भाग गया और इसे हल कर लिया। मैंने एसक्यूएल सर्वर 2008 आर 2 में एक कॉलम पर एक फ़िल्टर इंडेक्स बनाया है, लेकिन डालने पर यह त्रुटि प्राप्त होगी। देखा गया कि इस सवाल का पूरी तरह उत्तर नहीं दिया गया था क्योंकि यह हर डालने में हमेशा arithabort चालू करने के लिए कठिन हो सकता है। मुझे एक ब्लॉग मिला जो दिखाता है कि यह डेटाबेस संगतता स्तर था जो मुद्दा था। 80 (2000) से 100 (2008) तक संगतता स्तर बदल गया और समस्या हल हो गई। सुनिश्चित नहीं है कि संगतता स्तर को 9 0 में बदलना यह हल करेगा या नहीं, लेकिन कोशिश करने लायक है।

SQL सर्वर संगतता स्तर और यहां बदलने के लिए आदेश। http://msdn.microsoft.com/en-us/library/bb510680.aspx

यह काम नहीं करता है या आप संगतता मोड को बदल नहीं सकते ब्लॉग में एक ट्रिगर जोड़ कर इसे अन्य वैकल्पिक हल के बारे में मैं यहाँ बात कर रहा था http://chrismay.org/2013/05/23/interesting-problem-with-sql-server-arithabort-filtered-indexes-calculated-columns-and-compatibility-mode-of-80/

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

+0

मैं ईमानदारी से आशा करता हूं कि आपके निवासी डीबीए ने * संगतता * में परिवर्तन को अधिकृत किया है। इस बदलाव को हल्के ढंग से नहीं किया जाना चाहिए, या सभी अनुप्रयोगों के व्यापक परीक्षण के बिना डेटाबेस गाएं। –

+1

मैं डीबीए हूं और यह परीक्षण डेटाबेस पर था जो उत्पादन से साप्ताहिक पुनर्स्थापन के लिए लिखे गए हैं ताकि यह सुनिश्चित किया जा सके कि बैक अप अच्छे हैं :-) उत्पादन में इसे बदलने से पहले अधिक परीक्षण करना होगा। – bpfrenchak

+0

अच्छा। इसे आपके उत्तर में जोड़ा जाना चाहिए। –

0

आप डेटाबेस विकल्प बदल सकते हैं, इसलिए विकल्प सेट विश्व स्तर पर उपलब्ध हैं

ALTER DATABASE [$(DatabaseName)] 
     SET ANSI_NULLS OFF, 
      ANSI_PADDING OFF, 
      ANSI_WARNINGS OFF, 
      ARITHABORT OFF, 
      CONCAT_NULL_YIELDS_NULL OFF, 
      NUMERIC_ROUNDABORT OFF, 
      QUOTED_IDENTIFIER OFF 
     WITH ROLLBACK IMMEDIATE; 
0

ओपन एसक्यूएल सर्वर मैनेजमेंट स्टूडियो, ठीक है, सर्वर नाम पर क्लिक करें चुनें गुण, खुले कनेक्शन टैब और फिर गणित की जांच बीच में बंद करें विकल्प

1

मैं भी इस त्रुटि एक संग्रहीत प्रक्रिया को क्रियान्वित (कि अद्यतन रिकॉर्ड) एक आवेदन से और इस मेरी समस्या हल का सामना करना पड़ा: https://support.microsoft.com/en-us/kb/305333

तो बुनियादी तौर पर, मैं कोड का यह सेट जोड़ा मेरी संग्रहीत प्रक्रिया को निष्पादित करने से पहले

sqlConn = New SqlConnection(connectionString) 
If sqlConn.State = ConnectionState.Closed Then sqlConn.Open() 

sqlCmd = New SqlCommand() 
With sqlCmd 
    .Connection = sqlConn 
    .CommandType = CommandType.text 
    .CommandText = "SET ARITHABORT ON" 
    .ExecuteNonQuery() 

    .CommandType = CommandType.StoredProcedure 
    .CommandText = "MY PROCEDURE" 
    .ExecuteNonQuery() 
End With 

उम्मीद है कि यह किसी की सहायता करेगा।