BOL के अनुसार :
एक स्थायी, परिकलित कॉलम वाली तालिका बनाने के लिए, निम्नलिखित कनेक्शन सेटिंग्स को सक्षम किया जाना चाहिए:
SET ANSI_NULLS ON
SET ANSI_PADDING ON
SET ANSI_WARNINGS ON
SET ARITHABORT ON
SET CONCAT_NULL_YIELDS_NULL ON
SET NUMERIC_ROUNDABORT ON
SET QUOTED_IDENTIFIER ON
ये मान डेटाबेस स्तर पर सेट हैं और इनका उपयोग करके देखा जा सकता है:
SELECT
is_ansi_nulls_on,
is_ansi_padding_on,
is_ansi_warnings_on,
is_arithabort_on,
is_concat_null_yields_null_on,
is_numeric_roundabort_on,
is_quoted_identifier_on
FROM sys.databases
हालांकि, सेट विकल्प क्लाइंट एप्लिकेशन द्वारा भी सेट किए जा सकते हैं SQL सर्वर से कनेक्ट हो रहा है।
एक आदर्श उदाहरण SQL सर्वर प्रबंधन स्टूडियो है जिसमें SET ANSI_NULLS और SET QUOTED_IDENTIFIER दोनों के लिए डिफ़ॉल्ट मान हैं। यह एक कारण है कि मैं शुरू में आपके द्वारा पोस्ट की गई त्रुटि की नकल नहीं कर सका।
वैसे भी, त्रुटि को डुप्लिकेट करने के लिए, यह प्रयास करें (यह SSMS डिफ़ॉल्ट सेटिंग्स को ओवरराइड करेगा):
SET ANSI_NULLS ON
SET ANSI_PADDING OFF
SET ANSI_WARNINGS OFF
SET ARITHABORT OFF
SET CONCAT_NULL_YIELDS_NULL ON
SET NUMERIC_ROUNDABORT OFF
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE T1 (
ID INT NOT NULL,
TypeVal AS ((1)) PERSISTED NOT NULL
)
आप ऊपर दिए गए परीक्षण मामले को निम्न का उपयोग करके ठीक कर सकते हैं:
SET ANSI_PADDING ON
SET ANSI_WARNINGS ON
टेबल और संबंधित इंडेक्स बनाने से पहले मैं आपकी स्क्रिप्ट में इन दो सेटिंग्स को बदलने की सलाह दूंगा।