sql server - डाटाबेस प्रोजेक्ट बिल्ड करते समय 'गलत सेट विकल्प' त्रुटि




sql-server sql-server-2008 (3)

मुझे इस समस्या का समाधान मिला:

  1. सर्वर गुणों पर जाएं।
  2. कनेक्शन टैब का चयन करें।
  3. जांचें कि ansi_padding विकल्प अनचेक किया गया है या नहीं।

हम अपने डेटाबेस उत्पन्न करने के लिए विजुअल स्टूडियो और डेटाबेस प्रोजेक्ट का उपयोग कर रहे हैं।

मैंने अभी कई डेटाबेस परिवर्तन किए हैं ( Correspondence नाम की एक नई तालिका को जोड़कर) डेटाबेस प्रोजेक्ट में उन परिवर्तनों को आयात किया है, और डेटाबेस को पुनर्निर्माण (पुनर्निर्माण) करने का प्रयास किया है।

जब मैं करता हूं, मुझे निम्न त्रुटि मिलती है:

[डीबीओ] बनाना। [पत्राचार] ... संदेश 1 9 34, स्तर 16, राज्य 1, सर्वर (सर्वर का नाम), रेखा 1 तालिका बनाएं विफल रहा क्योंकि निम्न एसईटी विकल्पों में गलत सेटिंग्स हैं: 'ANSI_WARNINGS, ANSI_PADDING'। सत्यापित करें कि एसईटी विकल्प अनुक्रमित दृश्यों और / या अनुक्रमित कॉलम और / या फ़िल्टर किए गए इंडेक्स और / या क्वेरी नोटिफिकेशन और / या एक्सएमएल डेटा प्रकार विधियों और / या स्थानिक इंडेक्स ऑपरेशंस पर इंडेक्स के साथ उपयोग के लिए सही हैं।

क्या कोई मुझे इस त्रुटि को समझा सकता है, और इसे हल करने में मेरी सहायता कर सकता है? इस तालिका को बनाने के लिए डेटाबेस प्रोजेक्ट का उपयोग करने वाली स्क्रिप्ट यहां दी गई है।

PRINT N'Creating [dbo].[Correspondence]...';
GO

SET ANSI_NULLS, QUOTED_IDENTIFIER ON;
GO

CREATE TABLE [dbo].[Correspondence] (
    [Id]                INT              IDENTITY (1, 1) NOT NULL,
    [WorkbookId]        INT              NOT NULL,
    [ProviderId]        UNIQUEIDENTIFIER NOT NULL,
    [MessageThreadId]   INT              NOT NULL,
    [MessageThreadType] AS               ((1)) PERSISTED NOT NULL
);
GO

SET ANSI_NULLS, QUOTED_IDENTIFIER OFF;
GO

PRINT N'Creating PK_Correspondence...';
GO

ALTER TABLE [dbo].[Correspondence]
ADD CONSTRAINT [PK_Correspondence] PRIMARY KEY CLUSTERED ([Id] ASC)
    WITH (ALLOW_PAGE_LOCKS = ON, ALLOW_ROW_LOCKS = ON, PAD_INDEX = OFF,
    IGNORE_DUP_KEY = OFF, STATISTICS_NORECOMPUTE = OFF);
GO

मेरे मामले में मैं एक डेटाबेस से दूसरे डेटाबेस में एमएस एसक्यूएल सर्वर 2012 पर एक टेबल बनाने की कोशिश कर रहा था। तालिका पर राइट-क्लिक करना और स्क्रिप्ट टेबल को> ड्रॉप और नई क्वेरी संपादक विंडो में बनाना , निम्नलिखित स्क्रिप्ट बनाई गई थी:

USE [SAMPLECOMPANY]
GO

ALTER TABLE [dbo].[Employees] DROP CONSTRAINT [FK_Employees_Departments]
GO

/****** Object:  Table [dbo].[Employees]    Script Date: 8/24/2016 9:31:15 PM ******/
DROP TABLE [dbo].[Employees]
GO

/****** Object:  Table [dbo].[Employees]    Script Date: 8/24/2016 9:31:15 PM ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

SET ANSI_PADDING ON
GO

CREATE TABLE [dbo].[Employees](
    [EmployeeId] [int] IDENTITY(1,1) NOT NULL,
    [DepartmentId] [int] NOT NULL,
    [FullName] [varchar](50) NOT NULL,
    [HireDate] [datetime] NULL
 CONSTRAINT [PK_Employees] PRIMARY KEY CLUSTERED 
(
    [EmployeeId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

SET ANSI_PADDING OFF
GO

ALTER TABLE [dbo].[Employees]  WITH CHECK ADD  CONSTRAINT [FK_Employees_Departments] FOREIGN KEY([DepartmentId])
REFERENCES [dbo].[Departments] ([DepartmentID])
GO

ALTER TABLE [dbo].[Employees] CHECK CONSTRAINT [FK_Employees_Departments]
GO

हालांकि उपर्युक्त स्क्रिप्ट निष्पादित करते समय यह त्रुटि वापस कर रहा था:

चयन विफल हुआ क्योंकि निम्न एसईटी विकल्पों में गलत सेटिंग्स हैं: 'ANSI_PADDING'। सत्यापित करें कि एसईटी विकल्प अनुक्रमित दृश्यों और / या अनुक्रमित कॉलम और / या फ़िल्टर किए गए इंडेक्स और / या क्वेरी नोटिफिकेशन और / या एक्सएमएल डेटा प्रकार विधियों और / या स्थानिक इंडेक्स ऑपरेशंस पर इंडेक्स के साथ उपयोग के लिए सही हैं।

समाधान मैंने पाया है: इस तरह की स्क्रिप्ट के शीर्ष पर सेटिंग्स को सक्षम करना:

USE [SAMPLECOMPANY]
GO
/****** Object:  Table [dbo].[Employees]    Script Date: 8/24/2016 9:31:15 PM ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

SET ANSI_PADDING ON
GO

ALTER TABLE [dbo].[Employees] DROP CONSTRAINT [FK_Employees_Departments]
GO

/****** Object:  Table [dbo].[Employees]    Script Date: 8/24/2016 9:31:15 PM ******/
DROP TABLE [dbo].[Employees]
GO



CREATE TABLE [dbo].[Employees](
    [EmployeeId] [int] IDENTITY(1,1) NOT NULL,
    [DepartmentId] [int] NOT NULL,
    [FullName] [varchar](50) NOT NULL,
    [HireDate] [datetime] NULL
 CONSTRAINT [PK_Employees] PRIMARY KEY CLUSTERED 
(
    [EmployeeId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

ALTER TABLE [dbo].[Employees]  WITH CHECK ADD  CONSTRAINT [FK_Employees_Departments] FOREIGN KEY([DepartmentId])
REFERENCES [dbo].[Departments] ([DepartmentID])
GO

ALTER TABLE [dbo].[Employees] CHECK CONSTRAINT [FK_Employees_Departments]
GO

SET ANSI_PADDING OFF
GO

उममीद है कि इससे मदद मिलेगी।


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 दोनों के लिए डिफ़ॉल्ट मान हैं। यह उन कारणों में से एक है जिनसे मैं आपके द्वारा पोस्ट की गई त्रुटि को प्रारंभ में डुप्लिकेट नहीं कर सका।

वैसे भी, त्रुटि को डुप्लिकेट करने के लिए, इसे आज़माएं (यह एसएसएमएस डिफ़ॉल्ट सेटिंग्स को ओवरराइड करेगा):

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

तालिका और संबंधित इंडेक्स के निर्माण से पहले मैं आपकी स्क्रिप्ट में इन दो सेटिंग्स को ट्वीव करने की अनुशंसा करता हूं।