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).
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:
Veritabanı tek kullanıcı erişim modu, alter database set SINGLE_USER kullanarak ayarlayın.
Veritabanı Uyumluluk düzey değiştirin.
Veritabanı, alter database set MULTI_USER kullanarak çok kullanıcılı erişim modunda yerleştirin.
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:
|
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:
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ı.
Not
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:
|
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.
|
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.
|
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