2011-04-11 6 views
9

में COMPATIBILITY_LEVEL को समझना मुझे समझ में आया कि आपके मूल एक से पहले सुविधाओं को रोकने से पहले COMPATIBILITY_LEVEL में डेटाबेस सेट करना। हालांकि यह मामला प्रतीत नहीं होता है। निम्नलिखित SQL स्क्रिप्ट का साक्षी लें:SQL सर्वर

CREATE DATABASE Foo 
GO 
USE Foo 
GO 
ALTER DATABASE Foo SET COMPATIBILITY_LEVEL = 80 
GO 

CREATE TABLE Bar 
(
    Id UNIQUEIDENTIFIER NOT NULL, 
    TestNvcMax NVARCHAR (MAX) NOT NULL, -- Arrived in SQL 2005 
    TestDateTime2 DATETIME2 (7) NOT NULL -- Arrived in SQL 2008 
) 
GO 

लेकिन यह तालिका पूरी तरह से तैयार करती है - कोई विचार? मैंने एक त्रुटि संदेश किसी तरह का सोचा होगा या चेतावनी उचित हो गया होता

+1

वही घटना एसक्यूएल सर्वर 2012 पर 100 (2008) संगतता स्तर के तहत अच्छी तरह से चल रहे 'चयन ... ऑफ़सेट ... fetch' वाक्यविन्यास के साथ होती है, जबकि यह 2012 में पेश की गई थी। मुझे वास्तव में बुरा था संगतता स्तर क्या करता है पर धारणाएं। –

उत्तर

8

यहाँ आप संगतता स्तर 80, 90 और 100 के ALTER DATABASE Compatibility Level

जाहिर है नए डेटा प्रकार के बीच मतभेदों को प्रभावित नहीं है के बारे में पढ़ सकते हैं। मुझे लगता है कि संगतता स्तर पुराने संस्करण की तरह SQL सर्वर "व्यवहार" बनाने के लिए है, न कि आपको नई फैंसी सामग्री करने से रोकता है।

+0

"स्पष्ट रूप से नए डेटा प्रकार प्रभावित नहीं हैं" निष्पक्ष होने के लिए, यह स्पष्ट रूप से यह नहीं कहता है कि (मैंने इस पोस्टिंग से पहले उस लेख को पढ़ा था) लेकिन मुझे अभी भी लगता है कि इसे वीएस की तरह ही काम करना चाहिए जब मैं एक पुराना संस्करण चुनूं .NET Framework। नई चीजें सिर्फ उपलब्ध नहीं है ... – noonand

+0

मिकाएल को जवाब देने के रूप में यह वास्तव में क्या हो रहा है के करीब आता है। – noonand

8

BOL का कहना है:

संगतता स्तर SQL सर्वर के पिछले संस्करणों के साथ ही आंशिक पश्च संगतता प्रदान करता है।

इसके अलावा

:

नई कार्यक्षमता बड़े अनुकूलता स्तरों के तहत काम कर सकते हैं, लेकिन विकल्पों समायोजन की आवश्यकता हो सकती निर्धारित किया है।

मेरा मानना ​​है कि यह आपका मामला है।

+0

"लेकिन एसईटी विकल्पों को समायोजन की आवश्यकता हो सकती है।" मैं कुछ भी सेट नहीं कर रहा हूँ। मैं जो कर रहा हूं वह टेबल और स्पोक सृजन है, जो विफल रहता है जब मैं लक्ष्य SQL 2000 मशीन पर स्क्रिप्ट चलाने की कोशिश करता हूं ... – noonand

3

मुझे समझ में आता है कि यह एक पुरानी पोस्ट है, लेकिन किसी और के लिए जो यहां तक ​​समाप्त होता है, अधिक जानकारी हमेशा सहायक होती है।

यह भी हो सकता है कि निर्माण तालिका विवरण चलाने से पहले नई संगतता प्रभावी न हो।

"डेटाबेस के लिए नई संगतता सेटिंग प्रभावी होती है जब एक यूएसई डेटाबेस जारी किया जाता है या उस डेटाबेस के साथ एक नया लॉगिन डिफ़ॉल्ट डेटाबेस के रूप में संसाधित किया जाता है।" (https://msdn.microsoft.com/en-us/library/bb510680.aspx)