alter database uyumluluk düzeyi (Transact-SQL)

Belirtilen sürüm , ile uyumlu olacak şekilde belirli veritabanı davranışları ayarlar SQL Server. Yeni SQL Server 2008, alter database Sözdizimi aşağıdaki değiştirir sp_dbcmptlevel veritabanı Uyumluluk düzeyayarlamak için yordam.alter database diğer seçenekler için bkz: ALTER DATABASE (Transact-SQL).

Konu bağlantısı simgesiTransact-SQL sözdizimi kuralları

Sözdizimi

ALTER DATABASE database_name 
SET COMPATIBILITY_LEVEL = { 80 | 90 | 100 }

Bağımsız değişkenler

  • database_name
    Değiştirilecek olan veritabanının adıdır.

  • COMPATIBILITY_LEVEL {80 | 90 | 100}
    sürüm , SQL Server ile veritabanı olduğu için atölyeye uyumlu.Değer aşağıdakilerden biri olmalıdır:

    80 = SQL Server 2000 

    90 = SQL Server 2005 

    100 = SQL Server 2008 

Açıklamalar

Tüm yükleme SQL Server 2008, varsayılan Uyumluluk düzey 100'dür.Oluşturulan veritabanlarını SQL Server 2008 sürece bu düzey küme olarak model veritabanı Uyumluluk düzeyvardır.Bir veritabanı ne zaman yükseltme için SQL Server 2008 tüm önceki sürüm SQL Server, en az 80 ise, veritabanı, varolan Uyumluluk düzey korur.Veritabanı Uyumluluk düzey 80 altında ile yükseltme veritabanı Uyumluluk düzey 80 ayarlar.Bu, sistem ve kullanıcı veritabanları için geçerlidir.alter database veritabanı Uyumluluk düzey değiştirmek için kullanın.Uyumluluk düzey veritabanı görüntülemek için query compatibility_level sütun sys.databases Katalog görünümü.

Uyumluluk düzeyi geriye dönük uyumluluk için kullanma

Uyumluluk düzey yalnızca belirtilen veritabanı için değil tüm sunucuyu davranışlar etkiler.Yalnızca kısmi geriye dönük uyumluluk önceki sürümleri ile uyumluluk düzey sağlar SQL Server.Uyumluluk düzey Ara geçiş yardımcı olarak ilgili uyumlulukdüzey ayarı tarafından denetlenir davranışlar sürüm farklılıkları gidermek için kullanabilirsiniz.Varolan SQL Server uygulamaları davranış farklılıkları etkilenir SQL Server 2008, uygulamanın düzgün çalışması için Dönüştür.Daha sonra alter database Uyumluluk düzey 100 olarak değiştirmek için kullanın.Veritabanı sonraki geçerli (olarak varsayılan veritabanı oturumu açma veya use deyimiçinde belirtilen olup olmadığını) yapıldığında, yeni bir veritabanı Uyumluluk ayarı etkinleşir.

En iyi yöntemler

Kullanıcılar veritabanına bağlıyken Uyumluluk düzey değiştirme etkin sorguları için yanlış sonuç kümeleri oluşturabilir.Bir sorgu planı derlenmesi sırasında uyumluluk düzey değişirse, örneğin, derlenmiş planı hem eski ve yeni uyumluluk düzeyleri üzerinde bir yanlış plan ve büyük olasılıkla tutarsız sonuçlarelde edilen temel.Ayrıca, sorunu planı plan önbelleğinde yerleştirilmişse olarak ödenmektedir ve izleyen sorgular için yeniden kullanılabilir.Geçersiz sorgu sonuçlarönlemek için bir veritabanı Uyumluluk düzey değiştirmek için aşağıdaki yordamı öneririz:

  1. Veritabanı tek kullanıcı erişim modu, alter database set SINGLE_USER kullanarak ayarlayın.

  2. Veritabanı Uyumluluk düzey değiştirin.

  3. Veritabanı, alter database set MULTI_USER kullanarak çok kullanıcılı erişim modunda yerleştirin.

  4. Bir veritabanı erişim modunu ayarlama hakkında daha fazla bilgi için bkz: ALTER DATABASE (Transact-SQL).

Seçeneklerini ayarlama

Yeni işlevsellik eski uyumluluk düzeyleri altında çalışabilir, ancak seçeneklerini ayarlama ayarlamalar gerekebilir.Örneğin, kullanarak xml veri türü Uyumluluk düzey 80 altında gerektirir uygun ANSI set seçenekleri.Veritabanı Uyumluluk düzey olduğunda Ayrıca, küme 90 veya daha yüksek ayarına ANSI_WARNINGS açık örtük olarak ARITHABORT on olarak ayarlar.Veritabanı Uyumluluk düzey küme için 80, ARITHABORT seçeneği açık olarak küme açık olması gerekir.Daha fazla bilgi için, bkz. Sonuçları etkileyen seçeneklerini ayarlama.

Uyumluluk düzeyleri ve saklı yordamlar

saklı yordam yürütüldüğünde, tanımlanmış veritabanının geçerli Uyumluluk düzey kullanır.Veritabanı Uyumluluk ayarı değiştirildiğinde, tüm kendi saklı yordamlar otomatik olarak buna göre çekirdekler.

80 Ve düzeyi 90 arasındaki uyumluluk düzeyi

Bu bölümde Uyumluluk düzey 90 tanıtılan yeni davranış açıklanır.

Uyumluluk düzey 90, davranış aşağıdaki değişiklikler gerçekleşir.

Uyumlulukdüzey ayarı 80

Uyumlulukdüzey ayarı 90

Olasılığını etkisi

from yan tümcetümcesinde kilitleme ipuçları için WITH anahtar sözcüğü her zaman isteğe bağlıdır.

Bazı istisnalar, WITH anahtar sözcüğü ile ipuçları yalnızca belirtilen from yan tümce tümcesinde tablo ipuçlarını desteklenmez.Daha fazla bilgi için, bkz. (Transact-SQL).

High

* = Ve = * dış birleştirmek işleçleri, bir uyarı iletisi ile desteklenir.

Bu işleçler desteklenmez; outer JOIN anahtar sözcüğü kullanılmalıdır.

High

bağlama sütun seçme listesinde tanımlanan sütunlara order by listesinde başvuru, sütun ambiguities göz ardı edilir ve sütun önekleri bazen göz ardı edilir.Bu, beklenmeyen bir sırada döndürmek sonuç kümesi neden olabilir.

Örneğin, bir order by yan tümce ile tek bir iki parçalı sütun (<table_alias>.<column>) select listesindeki bir sütun başvurusu kabul edilir, ancak tablo diğer ad gözardı edilir kullanılan.Aşağıdaki sorgu göz önünde bulundurun.

SELECT c1 = -c1 FROM t_table AS x ORDER BY x.c1

Çalıştırıldığında, sütun önek sipariş tarafından dikkate alınmaz.Belirtilen kaynak sütun sıralama işlemi gerçekleşmez (x.c1) beklendiği gibi; Bunun yerine türetilmiş üzerinde oluşur sorguda tanımlanansütunc1. Bu sorgu için yürütme planı, türetilmiş sütun değerlerini ilk hesaplanır ve sonra hesaplanan değerleri sıralanır gösterir.

Hatalar üzerinde sütun ambiguities üretilir.Sütun önekleri belirtilen order by içinde değil gözardı bağlama sütun seçme listesinde tanımlanan zaman.

Aşağıdaki sorgu göz önünde bulundurun.

SELECT c1 = -c1 FROM t_table AS x ORDER BY x.c1

Çalıştırıldığında, order by yan tümce tümcesindeki sütun önek gözardı değil.Belirtilen kaynak sütun sıralama işlemi gerçekleşir (x.c1) beklendiği gibi.Bu sorgu için yürütme planı sort işleç tarafından döndürülen satır siparişleri gösterir t_table ve sonra türetilmiş sütundeğerlerini c1 seçim listesinde tanımlanan hesaplanır.

Medium

Bir INSERT select içinde farklı veri türlerini bir BİRLİĞİ'nden, her SENDİKA şube doğrudan INSERT hedef sütun türünü artığını.Bile kendisi tarafından kullanılan birleşim türü uyumsuz dönüşümleri nedeniyle başarısız olabilir, çünkü dalı BİRLİĞİ sonuç türü için hiçbir zaman dönüştürülür INSERT select BİRLİĞİ başarıya ulaşmasına yapar.

Sonuç tür BİRLEÞİMİN INSERT select bağımsız olarak türetilir.Her dalında BİRLİĞİ BİRLİĞİ sonucu türünü artığını ve INSERT hedef sütun türünü artığını.İlk cast, SENDİKAYA uyumsuz türleri varsa, bir hata neden olabilir.Uyumluluk düzey 90 çalıştırmak için INSERT select içinde kullanılan tüm uyumsuz türü sendikalar düzeltmeniz gerekir.

Medium

Ekle ve güncelleştir işlemleri bir görünümü aracılığıyla yanlış görünümü veya başvurulan görünümü üst yan tümcekullandığında Denetle seçeneği ile yan tümce belirten görünümleri desteklenir.

Ekle ve güncelleştir işlemleri bir görünümü aracılığıyla görünümü veya başvurulan görünümü üst yan tümcekullandığında Denetle seçeneği ile birlikte kullanan görünümleri desteklenmez.

Medium

UNION değişken uzunlukta sütun ve sabit uzunlukta sütun sabit uzunlukta sütunüretir.

Değişken uzunlukta sütun ve sabit uzunlukta sütun UNION değişken uzunlukta sütunüretir.

Medium

set xact_abort off tetikleyici içinde izin verilir.

set xact_abort off tetikleyici içinde izin verilmez.

Medium

GÖZ yan tümce izin (gözardı görünümlerde ve).

GÖZ yan tümce görünümlerde izin verilmez.

Medium

Etki alanı hataları ANSI_WARNINGS tarafından denetlenir değil.ARITHABORT ayarları, ANSI_WARNINGS küme için off ARITHABORT için herhangi bir değişiklik olmaz, izlenmesi ve ödenen.

Etki alanı hata ANSI_WARNINGS tarafından da denetlenir ve önem 16 hatalardır.ANSI_WARNINGS veya ARITHABORT on, null değer döndürmek yerine bir hata atılır.Bu değişiklikten off için küme olan ARITHABORT üzerine bağlı olan kullanıcı komut dosyaları bozuk.

Medium

uzak verikaynak [OpenRowset veya SorguAç] karşı geçiş sorgusu yinelenen adlar sütunlarla oluyorsa, sütunları açıkça sorguda adlı yinelenen sütun adları yoksayılır.

uzak verikaynak [OpenRowset veya SorguAç] karşı geçiş sorgu sütun yinelenen sütun adları ile oluyorsa, bir hata ortaya çıkar.

Low

Karakter dize sabitleri ve varbinary sabitler 8000 kabul çok daha büyük boyutta text, ntext, veya image.

Karakter dize sabitleri ve varbinary sabitler 8000 türü davranılan dan büyük boyutta varchar(max) (veya nvarchar(max) ve varbinary(max), sırasıyla).Bu veri türünü seç … kullanılarak oluşturulan tablo değiştirebilirsiniz Seçim listesi gibi ifadeler içeriyorsa INTO.

Low

Sayısal türler arasında karşılaştırmalar (smallint, tinyint, int, bigint, numeric, decimal, smallmoney, money), önceliği daha yüksek türüne tür hiyerarşisinde daha düşük önceliğe sahip comparand dönüştürerek yapılır.

Dönüşümleri türü sayısal değerleri karşılaştırılır.Bu geliştirilmiş performans sağlar.Ancak, bu bazı değişiklikler özellikle dönüştürme taşma özel durumlara neden olduğu durumlarda davranış neden olabilir.

Low

Giriş 4000 karakterden uzunsa dize bağımsız değişkenleri alır yerleşik meta veriler işlevleri kendi giriş kesecek.

Kesme nonspace karakterleri kaybına neden olacaksa yerleşik meta veriler işlevleri bir hata yükseltmek.

Low

küme , tırnak işareti olmayan tanımlayıcı izin verilmeyen karakterler değişmeden kalır.

Transact-SQL Ayrıştırıcı desteklediği Unicode 3.2 standart, şimdi verilmez nondelimited tanımlayıcıları bazı uluslararası karakterleri karakter sınıflandırma değiştirir

Low

set ANSI_WARNINGS on set ARITHABORT off için kayan nokta etki alanı hata [yani negatif log() bağımsız değişkenleri işlev] durum ayarı geçersiz kılmaz.ANSI_WARNINGS on olarak ayarlanmışsa ancak ARITHABORT kapalı, kayan nokta etki alanı hatalar sorguyu sona erdirilecek neden değil.

set ANSI_WARNINGS on tamamen ARITHABORT kapalı ayarını geçersiz kılar.durum noktası etki alanı hataları Yüzen sona erdirilecek sorgu neden olur.

Low

Tamsayı olmayan sabitler izin (gözardı order by yan tümcetümcesinde ve).

Tamsayı olmayan sabitler order by yan tümcetümcesinde izin verilmez.

Low

Boş küme deyim (set seçenek atama) izin verilir.

Boş küme yan tümce izin verilmez.

Low

KİMLİK öznitelik , türetilen tablotarafından üretilen sütunlar için doğru türetilmemiş.

KİMLİK öznitelik , türetilen tablolar tarafından üretilen sütunlar için doğru türetilir.

Low

Kayan nokta veri türü üzerinde aritmetik işleçler null atanabilirlik özellik her zaman null olduğunda.

null atanabilirliközellik aritmetik işleçleri kayan nokta üzerinden veri türü burada nonnullable girişlerdir ve ANSI_WARNINGS on durum nonnullable değiştirilir.

Low

İçinde Ekle...deyim ile BİRLİĞİ, tek tek sonuç kümeleri tümünü hedef sonuç türüne dönüştürülür tarafından üretilen türlerini seçin.

İçinde Ekle...select deyim BİRLİĞİ, çeşitli dalları baskın türü belirlenir ve sonuçlar için hedef tablo türü dönüştürülmeden önce o türüne dönüştürülür.

Low

select...for xml deyimhex(27) ( ' karakter) ve hex(22) ( " karakter) her zaman, hatta gerekli yerlerde entitized.

xml için yalnızca gerektiğinde hex(27) ve hex(22) entitizes.Bunlar aşağıdaki durumlarda entitized değil:

  • öznitelik içerik hex(27) ( ' karakter) ile ayrılmış öznitelik değerleri, entitized değil "ve hex(22) ( " karakter) ile ayrılmış öznitelik değerleri, entitized değil '.

  • Öğe içeriğinde hex(27) ve hex(22) hiçbir zaman entitized.

Low

for XML'de zaman damgası değeri bir tamsayı eşleştirilir.

for XML'de zaman damgası değeri bir ikili değerine eşleştirilir.

Daha fazla bilgi için, bkz. Zaman damgası veri türü için xml desteği için.

Yüksek (, bir timestamp sütun kullanılır); Aksi takdirde, düşük

for xml ve openxml, yüksek -aralık Unicode karakterleri (3 bayt) adlarındaki 8 pozisyonları kullanılarak temsil edilir.

Örneğin, 8 pozisyonları kullanarak, for xml Unicode kod noktasıtemsilU+10000 olarak:

<a_x00010000_ c1="1" />

for xml ve openxml, yüksek -aralık Unicode karakterleri (3 bayt) adlarındaki 6 pozisyonları kullanılarak temsil edilir.

Örneğin, 6 pozisyonları kullanarak, for xml Unicode kod noktasıtemsilU+10000 olarak:

<a_x010000_ c1="1" />

Low

for XML'de türetilmiş tablo eşlemeleri otomatik modunda saydam olarak kabul edilir.

Örneğin:

USE AdventureWorks2008R2;
CREATE TABLE Test(id int);
INSERT INTO Test VALUES(1);
INSERT INTO Test VALUES(2);
SELECT * FROM (SELECT a.id AS a, 
b.id AS b FROM Test a 
JOIN Test b ON a.id=b.id) 
Test FOR XML AUTO;

Zaman Uyumluluk düzey için AdventureWorks2008R2 küme için 80, yukarıdaki örnek oluşturur:

<a a="1"><b b="1"/></a>

<a a="2"><b b="2"/></a>

for XML'de türetilmiş tablo eşlemeleri otomatik modda içeriyi kabul edilir.

Zaman Uyumluluk düzey için AdventureWorks2008R2 küme 90, önceki örnek oluşturur:

<Test a="1" b="1"/>

<Test a="2" b="2"/>

Yüksek (for xml auto modu görünümler üzerinde uygulanıyorsa); Aksi takdirde, düşük

İçin dize money dönüşümleri destekler bir ters eğik çizgi (\) kullanarak para sembol olarak yalnızca Japonca ve Korece dil.

Ters eğik çizgi (\), tüm dize olarak kabul edilir money dönüşümler tüm diller.ISNUMERİC ne zaman true döndürür \ para birimi simgesi olarak kullanılır.

Sürümlerinde veritabanları için SQL Server daha önceki SQL Server 2005, bu yeni davranış dizinler keser ve bir ISNUMERİC üzerinde bağımlı hesaplanmış sütunları içeren değerini döndürmek \ ve dil ne Japonca veya Korece. olduğu için

Low

Aritmetik işleç her zaman işlenen yapılamayan ve ANSI_WARNINGS veya ARITHABORT küme açık olsa bile, null olabilecek, sonucudur.

ANSI_WARNINGS veya ARITHABORT küme için kayan sonucu her iki işlenenleri nonnullable olduğunda noktası aritmetik işleç nonnullable, olur.

Bu değişikliği null atanabilirlik , hataya neden olduğunda bcp ikili biçimi kullanan verileri toplu vermek için kullanılan bir SQL Server 2000kayan kullanan hesaplanmış bir sütun içerentablo , aritmetik işleç ' ın üzerine gelin ve bcp veya bulk INSERT sonra bu verileri toplu alma kullanılan bir SQL Server 2005tablo ile aynı tanımı.

NotNot
Her iki seçenek de, kapalı olduğunda Veritabanı Altyapısı sonuç null olarak işaretler.Bu aynı, SQL Server 2000.

Low

Ele yerleşik işlevler için nvarchar sağlanan değer parametre olarak varchardeğeri dönüştürülür, nvarchar(4000).De SQL Server 2000, daha büyük değer verilmezse, sessizce fazlalıkları atılır.

Ele yerleşik işlevler için nvarchar sağlanan değer parametre olarak varchar, değer için dönüştürülmüş hala nvarchar(4000).Ancak, daha büyük değer verilmezse, SQL Server 2008 oluşturduğu bir hata.

Uyumluluk düzey 90 çalıştırmak için kesme davranışı dayanır herhangi bir özel kod çözmeniz gerekir.

Low

Sabit uzunluklu bir birleşimini bir (char, binary, veya nchar) ile değişken uzunlukta dize (varchar, varbinary, nvarchar) dize döndürür bir sabit uzunluklu sonuç.

UNION değişken boyutlu dize ve bir sabit boyutlu dize değişken boyutlu dizedöndürür.

Uyumluluk düzey 90 çalıştırmak için bir birleşimini bir değişken boyut türü ve sabit boyut türü kaynaklanan türü bağımlı olan yerlerin (dizinler, sorgular ve hesaplanan sütunlar) düzeltmeniz gerekir.

Low

0XFFFF karakter içeren nesne adları geçerli tanımlayıcılardır.

0XFFFF karakter içeren nesne adları geçerli tanımlayıcıları değildir ve erişilemiyor.

Uyumluluk düzey 90 çalıştırmak için bu karakteri içeren nesneleri yeniden adlandırmanız gerekir.

Low

SEÇİN ISNUMERIC('<string>') içinde virgül içinde gömülü <string> önemli olan.

Örneğin, aşağıdaki SELECT ISNUMERIC('121212,12') sorgu döndürür 0.Bu belirten dize 121212,12 olan sayısal.

SEÇİN ISNUMERIC('<string>') içinde virgül içinde gömülü <string> göz ardı edilir.

Örneğin, aşağıdaki SELECT ISNUMERIC('121212,12') sorgu döndürür 1.Bu işaret dize 121212,12 olan sayısal.

Low

Bir iki nokta üst üste (:) ayrılmış bir anahtar sözcük izleyen bir Transact-SQL deyim göz ardı edilir.

Bir iki nokta üst üste (:) ayrılmış bir anahtar sözcük izleyen bir Transact-SQL deyim deyim başarısız olmasına neden olur.

Low

Bir group by yan tümce tümcesinde dış sorgudan bir sütun başvuran bir alt sorgu başarılı olur.

Bir group by yan tümce tümcesinde dış sorgudan bir sütun başvuran bir alt sorgu , SQL standardına göre bir hata döndürür.

Low

Alt uyumluluk düzeyleri ve düzeyi 100 arasındaki farklar

Bu bölümde Uyumluluk düzey 100 tanıtılan yeni davranış açıklanır.

Uyumlulukdüzey 90 ayar veya alt

Uyumlulukdüzey ayarı 100

Olasılığını etkisi

QUOTED_IDENTIFER her zaman küme üzerinde çoklu deyimli tabloayardır- oturum düzey ayarı ne olursa olsun oluşturulduğunda değerli işlevler.

Tırnak içine alınmış TANIMLAYICI oturum ayardır ödenmiş, çoklu deyimli tablo-değerli işlevler oluşturulur.

Medium

Oluşturduğunuzda ya da bir bölüm işlev, alter datetime ve smalldatetime işlev değişmezleri varsayılarak US_English olarak değerlendirilirdil ayarı.

Geçerli dil ayarı değerlendirmek için kullanılan datetime ve smalldatetime bölüm işlevdeğişmezleri.

Medium

GÖZ yan tümce izin (gözardı INSERT ve select INTO deyimlerinde ve).

GÖZ yan tümce INSERT ve select INTO deyimlerinde izin verilmez.

Medium

Tam metin yüklemler çıktı yan tümcetümcesinde izin verilmez.

Tam metin yüklemler çıktı yan tümcetümcesinde izin verilmez.

Low

Full-Text STOPLIST oluşturmak, Full-Text STOPLIST değiştirme ve Full-Text STOPLIST bırak desteklenmiyor.Sistem stoplist ile yeni tam metin dizinleri otomatik olarak ilişkilendirilmiştir.

Full-Text STOPLIST oluşturmak, Full-Text STOPLIST değiştirme ve Full-Text STOPLIST bırak desteklenir.

Low

BİRLEŞTİRME ayrılmış bir anahtar sözcük zorlanmaz.

BİRLEŞTİRME tam olarak ayrılmış bir sözcüktür.BİRLEŞTİRME deyim altında 100 ve 90 uyumluluk düzeyleri desteklenir.

Low

Kullanarak <dml_table_source> INSERT deyim bağımsız değişken sözdizimi hatası yükseltir.

İç içe geçmiş bir INSERT, update, delete, bir çıktı yan tümce sonuçlar yakalama veya deyimBİRLEŞTİRİN ve bu sonuçlar bir hedeftablo veya Görünüm yerleştirin. Bu yapılır kullanarak <dml_table_source> INSERT deyimbağımsız değişkeni.

Low

NOINDEX belirtilmediği sürece, hem fiziksel ve mantıksal tutarlılık denetimleri tek bir tablo veya dizinli görünüm ve tüm onun kümelenmemiş hem de xml dizinler dbcc checkdb veya dbcc checktable gerçekleştirir.Kayma dizinler desteklenmez.

NOINDEX belirtilmediği sürece, hem fiziksel ve mantıksal tutarlılık denetimleri dbcc checkdb veya dbcc checktable tüm kümelenmemiş dizinler ve tek bir tablo üzerinde gerçekleştirir.Ancak, xml dizinler, kayma dizinleri ve dizin oluşturulmuş görünümler, varsayılan olarak yalnızca fiziksel tutarlılık denetimleri gerçekleştirilmez.

EXTENDED_LOGICAL_CHECKS ile belirtilirse, dizin oluşturulmuş görünümler, xml dizinler ve kayma dizinler üzerinde mantıksal denetimleri gerçekleştirilmez, burada sunmak.Varsayılan olarak, fiziksel tutarlılık denetimleri önce mantıksal tutarlılık denetimleri gerçekleştirilmez.NOINDEX de belirtilirse, yalnızca mantıksal denetimleri gerçekleştirilmez.

Low

Ne zaman bir output yan tümce kullanılan veri işleme dili (DML) deyim ile ve bir çalışma zamanı hatası oluşur deyim yürütme sırasında işlemin tamamı sona erdi ve geri alındı.

Ne zaman bir output yan tümce kullanılan veri işleme dili (DML) deyim ile ve bir çalışma zamanı hatası davranış set xact_abort ayarına bağlıdır deyim yürütme sırasında oluşur.set xact_abort kapalı ise, output yan tümce kullanarak DMLdeyim ile oluşturulan bir deyim durdurma hatası deyimsonlanýr ancak toplu iş yürütme devam eder ve hareket geri döndürülmez. set xact_abort on ise, toplu işoutput yan tümce kullanarak DMLdeyim ile oluşturulan tüm çalışma -saat hatalar sonlandırılacak ve işlem geri alınır.

Low

KÜP ve toplu ayrılmış anahtar sözcükleri zorlanmaz.

KÜP ve TOPLAMASI group by yan tümceiçinde ayrılmış sözcükler.

Low

Sıkı doğrulama xml öğelerine uygulanan anyType türü.

Lax doğrulama öğeleri için uygulanan anyType türü.Daha fazla bilgi için, bkz. Joker bileşenleri ve içerik doğrulama.

Low

Özel öznitelikler xsi: nil ve xsi: type sorgulanan veya veri işleme dili deyimleri tarafından değiştirilebilir.

Yani /e/@xsi:nil sırasında başarısız /e/@* yoksayar xsi:nil ve xsi:type öznitelikleri.Ancak, /e verir xsi:nil ve xsi:type ile tutarlılık için öznitelikleri SELECT xmlColbile, xsi:nil = "false".

Özel öznitelikler xsi: nil ve xsi: type normal öznitelik olarak depolanır ve sorgulanan ve olması değiştirilmiş.

Örneğin, sorgu yürütülürken SELECT x.query('a/b/@*') de dahil olmak üzere tüm özniteliklerini döndürür xsi: nil ve xsi: type.Bu sorgu türleri çıkarmak yerine @* ile @*[namespace-uri(.) != "XSI ad alanı URI Ekle" ve (local-name(.) = "type" veya local-name(.) ="nil".

Low

xml sabitdize değeri dönüştüren bir kullanıcı tanımlı işlev bir SQL Server datetime türü olarak deterministic işaretlenmiş.

xml sabitdize değeri dönüştüren bir kullanıcı tanımlı işlev bir SQL Server datetime türü olarak non-deterministik olarak işaretlenmesini.

Low

xml Birliği ve liste türleri tam olarak desteklenmez.

Birliği ve liste türleri aşağıdaki işlevleri de dahil olmak üzere tam olarak desteklenir:

  • Liste Birliği

  • Birleşim Birliği

  • atomik türleri listesi

  • Birleşim listesi

Low

Bir görünüm veya satır içi tabloeklendiğinde yöntem xQuery yöntem için gerekli set seçenekleri doğrulanmaz-değerli işlev.

Bir görünüm veya satır içi tabloeklendiğinde yöntem xQuery yöntem için gerekli set seçenekleri doğrulanır-değerli işlev.Seçeneklerini ayarlama yöntem küme yanlış ise, bir hata oluşturulur.

Gerekli seçenek ayarları hakkında daha fazla bilgi için bkz: (xml veri türü) seçeneklerini ayarlama.

Low

xml standardına göre satır sonu karakterlerini (satır başı ve satır besleme) içeren xml öznitelik değerleri normalleştirilmiş değil.Yani, iki karakter yerine tek bir satır besleme karakteri döner.

Satır sonu karakterlerini (satır başı ve satır besleme) içeren xml öznitelik değerleri xml standardına göre normalleştirilmiş.Yani, dış ayrýþtýrýlmýþ varlýklar (belge varlıkdahil) tüm satır sonlarını girişte iki karakterlik sıra #xD #xA ve #xA tarafından bir tek #xA karakteri izleyen değil #xD çevirerek normalleştirilmiş.

Geri gönderildiği biçimde satır sonu karakterler içeren dize değerlerini taşımak için öznitelikler kullanan uygulamalar bu karakterleri almaz.Normalleştirme işlemi önlemek için tüm satır sonu karakterleri kodlamak için xml sayısal karakter varlıkları kullanın.

Low

sütun özelliklerini ROWGUIDCOL ve kimlik yanlış bir kısıtlama olarak adlandırılabilir.Örneğin deyim CREATE TABLE T (C1 int CONSTRAINT MyConstraint IDENTITY) yürütür, ancak kısıtlama adı korunmaz ve kullanıcının. için erişilebilir değil

sütun özelliklerini ROWGUIDCOL ve kimlik kısıtlaması olarak adlandırılamaz.156 Hata döndürülür.

Low

Çift yönlü bir atama gibi kullanarak sütunları güncelleştirme UPDATE T1 SET @v = column_name = <expression> üretmek beklenmeyen sonuçlar nedeniyle Canlı değişken değeri, where gibi ve yan tümce deyim başlangıç yerine deyim yürütme sırasında başka yan tümceler de kullanılabilirdeğeri.Bu satır başına temelinde yazıcılarında değiştirmeye yüklemler anlamlarý neden olabilir.

Bu davranış, yalnızca Uyumluluk düzey 90 küme olduğunda geçerlidir.

Yalnızca başlangıç değeri sütun deyim deyim yürütme sırasında erişildiği iki yönlü bir atama kullanarak sütunları güncelleştirme beklenen sonuçlar üretir.

Low

Değişken atama bir üstdüzey birleşim işleçiçeren bir deyim içinde izin verilir, ancak beklenmedik sonuçlarverir.Örneğin, aşağıdaki ifadeleri, yerel bir değişken olarak @v sütundeğeri atanmış EmployeeID iki tablo. Birliği'ndenselect deyim birden fazla değer verir, tanım olarak, değişken döndürülen son değeri atanır.Bu durum, değişken doğru olarak son değeri atanır, ancak, sonuç kümesi seçin UNION deyim de döndürülür.

ALTER DATABASE AdventureWorks2008R2
SET compatibility_level = 90;
GO
USE AdventureWorks2008R2;
GO
DECLARE @v int;
SELECT @v = EmployeeID FROM HumanResources.Employee
UNION ALL
SELECT @v = EmployeeID FROM HumanResources.EmployeeAddress;
SELECT @v;

Değişken atama bir üstdüzey birleşim işleçiçeren bir deyim içinde izin verilmez.10734 Hata döndürülür.

Hatayı gidermek için aşağıdaki örnekte gösterildiği gibi sorguyu yeniden yazın.

DECLARE @v int;
SELECT @v = EmployeeID FROM 
    (SELECT EmployeeID FROM HumanResources.Employee
     UNION ALL
     SELECT EmployeeID FROM HumanResources.EmployeeAddress) AS Test
SELECT @v;

Low

odbc işlev {fn convert()} dil varsayılan tarih biçimini kullanır.Bazı diller için varsayılan bir YAG'dir biçimi beklediğiniz diğer işlevleri ile {fn curdate()} gibi convert() birleştirildiğinde, dönüştürme hatalarına yol açabilir ydm biçimidir.

odbc işlev {fn convert()} stili 121 (bir dilden bağımsız YAG'dir biçimi) kullanan, odbc veri dönüştürme türleri SQL_TIMESTAMP, sql_date, SQL_TIME, sqldate, SQL_TYPE_TIME ve SQL_TYPE_TIMESTAMP.

Low

odbc işlev {fn curdate()} yalnızca tarih 'yyyy-AA-GG' biçiminde döndürür.

Örneğin tarih ve saat, {fn curdate()} gibi odbc işlev verir ': yyyy-mm-dd: ss.

Low

DateTime intrinsics datepart gibi dize geçerli bir datetime hazır olması için giriş değerleri gerektirmez.Örneğin, Seç datepart (yıl, ' 05/2007-30') başarıyla derler.

DateTime intrinsics datepart gibi dize geçerli bir datetime hazır olması için giriş değerleri gerektirir.Geçersiz bir datetime hazır kullanıldığında hata 241 döndürülür.

Low

Ayrılmış Anahtar Sözcükler

Uyumluluk ayarı tarafından ayrılmış anahtar sözcükleri de belirler Veritabanı Altyapısı.Aşağıdaki tablo her uyumluluk düzeyleri tarafından sunulan ayrılmış anahtar sözcükleri gösterir.

Uyumlulukdüzey ayarı

Ayrılmış anahtar sözcükleri

100

KÜP, BİRLEŞTİRME, TOPLAMASI

90

DIŞ, ÖZET, UNPIVOT, DÖNME, TABLESAMPLE

80

HARMANLAMA, İŞLEVİ, OPENXML

Verilen Uyumluluk düzeytüm o düzeyveya altındaki sunulan anahtar sözcükler ayrılmış anahtar sözcükleri içerir.Böylece, örnek düzey 100, anahtar sözcükler tüm uygulamalar için listelenen için yukarıdaki tablo ayrılmıştır.Alt düzeylerdeki uyumluluk, geçerli nesne adları düzey-100 anahtar sözcükleri kalır, ancak bu anahtar sözcükler için karşılık gelen düzey-100 dil özellikleri kullanılamaz.

Tanıtılan sonra anahtar sözcük ayrılmış olarak kalır.Örneğin, ayrılmış anahtar sözcüğü Uyumluluk düzey 80 başlandı, openxml düzeyleri 90 ile 100 ayrılmıştır.

Bir uygulama, uyumluluk düzeyiçin bir anahtar sözcük olarak ayrılmış tanımlayıcı kullanıyorsa, uygulama başarısız olur.Bu sorunu gidermek için köşeli ayraçlar ([]) veya tırnak işaretleri arasında tanımlayıcı içine (" "); Örneğin, uyumluluk düzey 90 harici tanımlayıcı kullanan bir uygulama yükseltmek için tanımlayıcı ya da [dış] değiştirebilir veya "Dış".

Daha fazla bilgi için, bkz. Ayrılmış Anahtar Sözcükler (Transact-SQL).

İzinler

Veritabanı üzerinde alter izni gerektirir.

Örnekler

A.Uyumluluk düzeydeğiştirme

Aşağıdaki örnek Uyumluluk düzey değiştirir AdventureWorks2008R2 veritabanına 90, SQL Server 2005.

ALTER DATABASE AdventureWorks2008R2
SET COMPATIBILITY_LEVEL = 90;
GO

B.order by (Senaryo 1) üzerinde etkisi Uyumluluk düzey

Aşağıdaki örnekte, order by bağlama için 80 ve 100 uyumluluk düzeyleri arasındaki fark gösterilmektedir.Örnek tablo, bu örnek oluşturur SampleTable, tempdb veritabanı.

USE tempdb;
CREATE TABLE SampleTable(c1 int, c2 int);
GO

Uyumluluk düzey 90 ve daha yüksek, varsayılan düzey, aşağıdaki SELECT... ORDER BY deyim , çünkü bir hata üretir, sütun diğer ad AS yan tümce c1, belirsiz.

SELECT c1, c2 AS c1
FROM SampleTable
ORDER BY c1;
GO

Veritabanı Uyumluluk düzeyiçin sıfırlanıyor sonra80, aynı SELECT... ORDER BYdeyim başarılı.

ALTER DATABASE tempdb
SET COMPATIBILITY_LEVEL = 80;
GO
SELECT c1, c2 AS c1
FROM SampleTable
ORDER BY c1;
GO

Aşağıdaki SELECT... ORDER BY deyim , belirli bir diğer ad as yan tümceiçinde belirtilmediği için iki uyumluluk düzeyleri çalışır.

ALTER DATABASE tempdb
SET COMPATIBILITY_LEVEL = 100;
GO
SELECT c1, c2 AS c3
FROM SampleTable
ORDER BY c1;
GO

ALTER DATABASE tempdb
SET COMPATIBILITY_LEVEL = 80;
GO
SELECT c1, c2 AS c3
FROM SampleTable
ORDER BY c1;
GO

C.order by (Senaryo 2) üzerinde etkisi Uyumluluk düzey

Uyumluluk düzey 90 ve daha yüksek, varsayılan düzey, şu anda SELECT...ORDER BY deyim üreten bir hata nedeniyle sütun diğer ad order by yan tümce tümcesinde belirtilen içeren bir tablo öneki.

SELECT c1 AS x
FROM SampleTable
ORDER BY SampleTable.x;
GO

Veritabanı Uyumluluk düzeysıfırlandıktan sonra80, aynı SELECT...ORDER BYdeyim başarılı.

ALTER DATABASE tempdb
SET COMPATIBILITY_LEVEL = 80;
GO
SELECT c1 AS x
FROM SampleTable
ORDER BY SampleTable.x;
GO

Aşağıdaki SELECT...ORDER BYdeyim order by yan tümcetümcesinde belirlenen sütundiğer ad tablo önek kaldırıldığından iki uyumluluk düzeyleri çalışır.

ALTER DATABASE tempdb
SET COMPATIBILITY_LEVEL = 100;
GO
SELECT c1 AS x
FROM SampleTable
ORDER BY x;
GO
ALTER DATABASE tempdb
SET COMPATIBILITY_LEVEL = 80;
GO
SELECT c1 AS x
FROM SampleTable
ORDER BY x;
GO