alter database uyumluluk düzeyi (Transact-sql)
Belirtilen sürümü ile uyumlu bazı veritabanı davranışları ayarlar SQL Server. Diğer alter database seçenekleri için bkz: alter veritabanı (Transact-sql).
Transact-SQL Sözdizim Kuralları
Sözdizimi
ALTER DATABASE database_name
SET COMPATIBILITY_LEVEL = { 90 | 100 | 110 }
Bağımsız değişkenler
database_name
Değiştirilmesi için veritabanı adıdır.COMPATIBILITY_LEVEL {90 | 100 | 110}
Sürümü SQL Serverile uyumlu olarak yapılması veritabanı olan. Değer aşağıdakilerden biri olmalıdır:90 = SQL Server 2005
100 = SQL Server 2008 and SQL Server 2008 R2
110 = SQL Server 2012
Açıklamalar
Tüm yüklemeleri için SQL Server 2012, varsayılan uyumluluk düzeyi 110 IS. Oluşturulan veritabanlarını SQL Server 2012sürece bu düzeye ayarlanır modeli veritabanı uyumluluk düzeyi vardır. Ne zaman bir veritabanı yükseltilmiş için SQL Server 2012herhangi bir önceki sürümünden SQL Server, en az 90 ise veritabanı varolan uyumluluk düzeyini korur. Bir veritabanı uyumluluk düzeyi 90 aşağıdaki yükseltme veritabanı uyumluluk düzeyi 90 ayarlar. Bu, sistem ve kullanıcı veritabanları için geçerlidir. Kullanım alter database veritabanı uyumluluk düzeyini değiştirmek için. Geçerli uyumluluk düzeyi veritabanı görüntülemek için compatibility_level sütununda sys.databases Katalog görünümü.
Uyumluluk düzeyi geriye dönük uyumluluk için kullanma
Uyumluluk düzeyi davranışlar yalnızca belirtilen veritabanı için değil, sunucunun tamamını etkiler. Uyumluluk düzeyi yalnızca kısmi önceki sürümleriyle geriye dönük uyumluluk sağlar SQL Server. Uyumluluk düzeyi bir ara geçiş yardım olarak ilgili uyumluluk düzeyi ayarıyla denetlenir davranışları sürüm farklılıkları gidermek için kullanın. Varsa SQL Serveruygulamaları davranış farklılıkları etkilenen SQL Server 2012, düzgün çalışması için uygulama dönüştürün. Daha sonra alter database uyumluluk düzeyi 100 olarak değiştirmek için. Veritabanı sonraki geçerli (varsayılan veritabanı olarak giriş veya bir use deyiminde belirtilen olup) yapıldığında veritabanı için yeni uyumluluk ayarı etkinleşir.
En İyi Yöntemler
Kullanıcılar veritabanına bağlıyken uyumluluk düzeyini değiştirmek aktif sorgular için hatalı sonuç kümeleri oluşturabilir. Sorgu planı derlenmekte uyumluluk düzeyi değişiklikleri, örneğin derlenmiş planı iki eski ve yeni Uyumluluk düzeyleri üzerinde yanlış bir planı ve potansiyel olarak yanlış sonuçlar sonuçlanan esas olabilir. Ayrıca, sorun planı plan önbelleğinde yerleştirilmişse bileşik ve sonraki sorguları için yeniden kullanılabilir. Hatalı sorgu sonuçları önlemek için bir veritabanı uyumluluk düzeyini değiştirmek için aşağıdaki yordamı önerilir:
Veritabanı, alter database set SINGLE_USER kullanarak tek kullanıcı erişim moduna ayarlayın.
Veritabanı uyumluluk düzeyini değiştirin.
Veritabanı, alter database set MULTI_USER kullanarak çok kullanıcılı erişim modunda koydu.
Bir veritabanı erişim modu ayarlama hakkında daha fazla bilgi için bkz: alter veritabanı (Transact-sql).
Uyumluluk düzeyleri ve saklı yordamlar
Saklı yordam yürütüldüğünde, onu tanımlandığı veritabanı geçerli uyumluluk düzeyini kullanır. Veritabanı uyumluluk ayarı değiştirildiğinde, onun saklı yordamların tümünü otomatik olarak buna göre recompiled.
90 Ve düzeyi 100 farklılıklar arasında uyumluluk düzeyi
Bu bölümde uyumluluk düzeyi 100 tanıtılan yeni davranış açıklanır.
Uyumluluk düzeyi ayarı 90 |
Uyumluluk düzeyi ayarı 100 |
Darbe olasılığını |
---|---|---|
Oturum düzeyi ayarı ne olursa olsun oluşturulduğunda QUOTED_IDENTIFER ayarı her zaman çoklu deyimli tablo değerli işlevler için on olarak ayarlanır. |
Çoklu deyimli tablo değerli işlevler oluşturulduğunda tırnak içine alınmış TANIMLAYICI oturum ayarı onurlandırıldı. |
Medium |
Oluşturduğunuzda veya alter PARTITION FUNCTION datetimeve smalldatetimeişlevi harflerin varsayılarak US_English dil ayarı olarak değerlendirilir. |
Geçerli dil ayarı değerlendirmek için kullanılan datetimeve smalldatetimebölüm işlevi harflerin. |
Medium |
for browse yan tümcesi izin (gözardı INSERT ve select INTO deyimlerinde ve). |
for browse yan tümcesi INSERT ve select INTO deyimlerinde izin verilmez. |
Medium |
Tam metin yüklemler output yan tümcesinde izin verilir. |
Tam metin yüklemler output yan tümcesinde izin verilmez. |
Düşük |
fulltext STOPLIST oluşturmak, alter fulltext STOPLIST ve fulltext STOPLIST drop desteklenmiyor. Sistem stoplist otomatik olarak yeni tam metin dizinleri ile ilişkilidir. |
fulltext STOPLIST oluşturmak, alter fulltext STOPLIST ve fulltext STOPLIST drop desteklenir. |
Düşük |
Birleştirme ayrılmış bir anahtar sözcük uygulanır. |
Birleştirme tamamen ayrılmış bir anahtar sözcük iş. BIRLEŞTIRME deyimini hem 100 hem de 90 Uyumluluk düzeyleri altında desteklenir. |
Düşük |
Kullanarak <dml_table_source> INSERT deyimi bağımsız değişken sözdizimi hatası yükseltir. |
Bir output yan tümcesinde iç içe INSERT, update, delete, sonuçlarını yakalamak veya deyimi BİRLEŞTİRMEK ve bu sonuçları hedef tablo veya Görünüm yerleştirin. Bu yapılır kullanarak <dml_table_source> INSERT deyimi bağımsız değişkeni. |
Düşük |
NOINDEX belirtilmedikçe, hem fiziksel ve mantıksal tutarlılık denetimleri tek bir tablo veya dizin oluşturulmuş görünüm ve onun tüm kümelenmemiş hem de xml dizinler dbcc checkdb veya dbcc checktable gerçekleştirir. Uzamsal dizinler desteklenmez. |
NOINDEX belirtilmedikçe, dbcc checkdb veya dbcc checktable tek bir tablo ve bütün kümelendirilmemiş dizinler üzerinde hem fiziksel ve mantıksal tutarlılık denetimleri 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 belirtilen dizin oluşturulmuş görünümler, xml dizinler ve kayma dizinler üzerinde mantıksal denetimleri gerçekleştirilmez, burada mevcut. Varsayılan olarak fiziksel tutarlılık denetimleri, mantıksal tutarlılık denetimlerinden önce gerçekleştirilir. NOINDEX de ayrıca belirtilirse, yalnızca mantıksal denetimler gerçekleştirilir. |
Düşük |
output yan tümcesi ile bir veri düzenleme dili (dml) deyimi kullanılır ve deyimi yürütme sırasında bir çalıştırma hatası oluşur tüm işlemin sona ve geri alındı. |
output yan tümcesi ile bir veri düzenleme dili (dml) deyimi kullanılır ve deyimi yürütme sırasında bir çalıştırma hatası oluşur davranış set xact_abort ayarına bağlıdır. set xact_abort kapalı ise, output yan tümcesi kullanarak dml deyimi tarafından oluşturulan bir deyimi durdurma hatası ifadesi sonlanır ancak toplu iş yürütme devam ediyor ve işlem geri alınır değil. set xact_abort on ise, tüm çalışma zamanı hataları output yan tümcesi kullanarak dml deyimi tarafından oluşturulan toplu iş sonlandırılır ve işlem geri alınır. |
Düşük |
cube ve rollup ayrılmış anahtar kelimeler olarak zorlanmaz. |
cube ve rollup ayrılmış anahtar sözcükleri group by yan tümcesi bulunmaktadır. |
Düşük |
Sıkı doğrulama xml öğelerine uygulanır anyTypetürü. |
LAX doğrulama öğelerine uygulanır anyTypetürü. Daha fazla bilgi için, bkz. Joker bileşenleri ve içerik doğrulama. |
Düşük |
Özel öznitelikler xsi: Nil ve xsi: Type sorgulanan veya veri düzenleme dili deyimleri tarafından güncellenmiştir. Bu demektir ki /e/@xsi:nilbaşarısız ise /e/@* yok sayar xsi:nilve xsi:typeöznitelikleri. Ancak, /edöner xsi:nilve xsi:typeile tutarlılık için öznitelikleri SELECT xmlCol, bile xsi:nil = "false". |
Özel öznitelikler xsi: Nil ve xsi: Type normal öznitelikleri saklanır ve sorgulanan ve güncellenmiştir. Örneğin, sorgu yürütme SELECT x.query('a/b/@*')dahil tüm özniteliklerini döndürür xsi: Nil ve xsi: Type. Bu tür sorgu dışında bırakmak yerine @*ile @*[namespace-uri(.) != "insert xsi namespace uri"ve (local-name(.) = "type"ya dalocal-name(.) ="nil". |
Düşük |
Bir xml sabit dize değerine dönüştürür, kullanıcı tanımlı bir işlev bir SQL Serverdatetime türü olarak deterministic işaretlenmiş. |
Bir xml sabit dize değerine dönüştürür, kullanıcı tanımlı bir işlev bir SQL Serverdatetime türü işaretli olarak deterministic olmayan. |
Düşük |
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 desteklenmektedir:
|
Düşük |
Yöntem bir görünüm veya satır içi tablo değerli işlev içerdiği zaman bir xQuery yöntemi için gerekli set seçenekleri doğrulanır. |
Yöntem bir görünüm veya satır içi tablo değerli işlev içerdiği zaman bir xQuery yöntemi için gerekli set seçenekleri doğrulanır. set seçenekleri yönteminin yanlış ayarlanmışsa, bir hata oluşturulur. |
Düşük |
Satır sonu karakterlerini (satır başı ve satır besleme) içeren xml öznitelik değerleri xml standardına göre normalleştirilmiş değil. Yani, iki karakter yerine tek bir satır besleme karakteri döndürülür. |
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 (belgenin varlığı da dahil) tüm satır sonlarını iki karakterlik sıra xD XA ve XA tarafından bir tek XA karakteri için takip edemiyorum herhangi bir xD çevirerek giriş normalleştirilmiş. Geri gönderilmektedir gibi öznitelikleri satır sonu karakterler içeren taşıma dize değerlerini 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. |
Düşük |
ROWGUIDCOL ve kimlik sütunu özelliklerini hatalı bir kısıtlama olarak adlandırılabilir. Örneğin CREATE TABLE T (C1 int CONSTRAINT MyConstraint IDENTITY)yürütür, kısıtlamanın adı değil korunur ve kullanıcı için erişilebilir değil. |
ROWGUIDCOL ve kimlik sütunu özelliklerini bir kısıtlama olarak adlandırılamaz. Hata 156 döndürülür. |
Düşük |
Çift yönlü bir atama gibi kullanarak sütunları güncelleştirme UPDATE T1 SET @v = column_name = <expression>canlı değeri değişkenin diğer yan ve yan tümcesi where gibi başlangıç değeri deyimi yerine deyimi yürütme sırasında kullanılabilir çünkü beklenmedik sonuçlar üretebilir. Bu anlamları yüklemler unpredictably bir satır başı olarak değiştirmek için neden olabilir. Bu davranış, yalnızca Uyumluluk düzeyi 90 olarak ayarlandığında geçerlidir. |
Çünkü sadece başlangıç değeri sütunun deyimini deyimi yürütme sırasında erişilen bir çift yönlü atama kullanarak sütunları güncelleştirme beklenen sonuçlar üretir. |
Düşük |
Değişken atama bir üst düzey UNION işleci içeren bir deyimi izin verilir, ancak beklenmedik sonuçlar verir. Örneğin, aşağıdaki ifadeler, yerel değişken içinde @vsütun değeri atanır BusinessEntityIDiki tablonun Birliği. select deyimi birden çok değer döndürdüğünde tanımına göre değişken döndürülen son değeri atanır. Bu durumda, değişken doğru son değeri atanır ancak seçin Birliği deyiminin sonuç kümesi de döndürülür.
|
Değişken atama bir üst düzey UNION işleci içeren bir deyimi içinde izin verilmez. Hata 10734 döndürülür. Hatayı gidermek için aşağıdaki örnekte gösterildiği gibi sorguyu yeniden yazın.
|
Düşük |
odbc işlevini {fn convert()} dil varsayılan tarih biçimini kullanır. Bazı dillerde ydm convert() Yag biçim beklediğiniz diğer işlevleri ile {fn curdate()} gibi birleştirildiğinde hangi dönüştürme hatalarına neden, varsayılan biçimidir. |
odbc işlevini {fn convert()} stili 121 (dilden bağımsız Yag biçimi) kullanan zaman odbc veri dönüştürme türleri sql_tımestamp, sql_date, SQL_TIME, sqldate, SQL_TYPE_TIME ve SQL_TYPE_TIMESTAMP. |
Düşük |
odbc işlevini {fn curdate()} yalnızca tarihi 'yyyy-AA-GG' biçiminde döndürür. |
Tarih ve zaman, örneğin {fn curdate()} odbc işlevini verir ' yyyy-AA-GG: ss. |
Düşük |
DateTime intrinsics datepart gibi dize geçerli bir datetime rakamları için giriş değerleri gerektirmez. Örneğin, Seç datepart (yıl, ' 2007-0530 ') başarıyla derler. |
DateTime intrinsics datepart gibi dize geçerli bir datetime rakamları için giriş değerleri gerektirir. Geçersiz bir datetime hazır kullanıldığında hata 241 döndürülür. |
Düşük |
Alt Uyumluluk düzeyleri ve düzeyi 110 arasındaki farklar
Bu bölümde uyumluluk düzeyi 110 tanıtılan yeni davranış açıklanır.
Uyumluluk düzeyi ayarı 100 ya da daha düşük |
Uyumluluk düzeyi ayarı 110 |
---|---|
Ortak dil çalışma zamanı (clr) veritabanına nesneleri clr versiyonu 4 ile yürütülür. Ancak, bazı davranış değişiklikleri clr 4 sürümünden tanıştırmak kaçınılmalıdır. Daha fazla bilgi için, bkz. clr tümleştirme yenilikler. |
clr veritabanı nesnelerini clr versiyonu 4 ile yürütülür. |
XQuery işlevleri string-lengthve substringher vekil iki karakter olarak sayılır. |
XQuery işlevleri string-lengthve substringher vekil olarak bir karakter sayımı. |
Özet özyinelemeli ortak tablo ifade (cte) sorgu içinde izin verilir. Ancak, birden çok satır başına gruplandırma olduğunda sorgu yanlış sonuçlar verir. |
Özet özyinelemeli ortak tablo ifade (cte) sorgu içinde izin verilmez. Bir hata döndürülür. |
RC4 algoritması yalnızca geriye dönük uyumluluk için desteklenir. Yeni malzeme yalnızca veritabanı uyumluluk düzeyi 90 ya da 100 olduğunda RC4 veya RC4_128 kullanılarak şifrelenebilir. (Önerilmez.) De SQL Server 2012, malzeme RC4 veya RC4_128 kullanılarak şifrelenmiş herhangi bir uyumluluk düzeyi şifresi. |
Yeni malzeme, RC4 veya RC4_128 kullanarak şifrelenemez. Bir aes algoritması gibi yeni bir algoritma kullanın. De SQL Server 2012, malzeme RC4 veya RC4_128 kullanılarak şifrelenmiş herhangi bir uyumluluk düzeyi şifresi. |
cast ve convert işlemleri için varsayılan stili timeve datetime2veri türleri ise iki tür hesaplanmış bir sütun ifadesinde kullanıldığında dışında 121. Hesaplanan sütunlarda, varsayılan stil 0'dır. Bu davranış, oluşturulduklarında, otomatik parametreleştirmenin olduğu sorgularda veya kısıtlama tanımlarında kullanıldıklarında hesaplanan sütunları etkiler. Aşağıdaki örnek, 0-121 stiller arasındaki farkı gösterir. Bu, yukarıda açıklanan davranışı göstermek değil. Tarih ve saat stilleri hakkında daha fazla bilgi için bkz: CAST ve CONVERT (Transact-SQL).
|
Üzerinde 110, cast ve convert işlemleri için varsayılan stil uyumluluğu altında düzey timeve datetime2veri türleri her zaman 121. Sorgunuz eski davranışı varsayıyorsa, 110'dan daha düşük bir uyumluluk düzeyi kullanın veya etkilenen sorguda 0 stilini açıkça belirtin. Veritabanını uyumluluk düzeyi 110'a yükseltmek, diske depolanan kullanıcı verilerini değiştirmez. Bu verileri el ile gerektiği gibi düzeltmelisiniz. Örneğin, yukarıda betimlendiği gibi bir hesaplanan sütun ifadesi içeren bir kaynakta bir tablo oluşturmak için SELECT INTO kullandıysanız, hesaplanan sütun tanımının kendisi yerine (stil 0'ı kullanan) veriler depolanır. Stil 121 ile eşleşmesi için bu verileri el ile güncelleştirmeniz gerekir. |
Herhangi bir uzak tablo türündeki sütunlarda smalldatetimebölümlenmiş bir görünümde başvurulan olarak eşlenen datetime. (Aynı konumdaki sıra seçin listesinde) yerel tablolarda karşılık gelen sütun türü olmalıdır datetime. |
Herhangi bir uzak tablo türündeki sütunlarda smalldatetimebölümlenmiş bir görünümde başvurulan olarak eşlenen smalldatetime. (Aynı konumdaki sıra seçin listesinde) yerel tablolarda karşılık gelen sütun türü olmalıdır smalldatetime. Dağıtılmış Bölümlenmiş görünümün 110 için yükselttikten sonra veri türü uyuşmazlığı nedeniyle başarısız olur. Uzak tabloya veri türüne değiştirerek çözebilirsiniz datetimeveya 100 yerel veritabanı düzeyindeki veya daha düşük uyumluluk ayarı. |
soundex işlevi aşağıdaki kuralları uygular.
|
soundex işlevi aşağıdaki kuralları uygular
Ek kurallar, daha önceki Uyumluluk düzeyleri altında hesaplanan değerleri farklı soundex işlevi tarafından hesaplanan değerler neden olabilir. Uyumluluk düzeyi 110 yükselttikten sonra dizinler, yığınlar, yeniden veya check kısıtlamaları soundex işlevini kullanan gerekebilir. Daha fazla bilgi için bkz.soundex (Transact-sql) |
Ayrılmış Anahtar Sözcükler
Uyumluluk ayarını da tarafından ayrılmış anahtar sözcükleri belirler Veritabanı Altyapısı. Aşağıdaki tablo her Uyumluluk düzeyleri tarafından sunulan ayrılmış anahtar sözcükleri gösterir.
Uyumluluk düzeyi ayarı |
Ayrılmış anahtar sözcükleri |
---|---|
110 |
GRUP, TRY_CONVERT, SEMANTICKEYPHRASETABLE, SEMANTICSIMILARITYDETAILSTABLE, SEMANTICSIMILARITYTABLE İÇİNDE |
100 |
KÜP, BİRLEŞTİRME, TOPLAMA |
90 |
HARİCİ, ÖZET, UNPIVOT, DÖNMEK, TABLESAMPLE |
Verilen uyumluluk düzeyinde, tüm anahtar kelimeler veya bu düzeyin altındaki tanıttı ayrılmış anahtar sözcükleri içerir. Böylece, örneğin, 110 düzeyinde uygulamalar için tüm yukarıdaki tabloda listelenen anahtar kelimeler aittir. Alt uyumluluk düzeyinde geçerli nesne adlarını düzeyi-100 anahtar kelime kalır, ancak bu anahtar kelimeler için karşılık gelen düzeyi-110 dil özellikleri kullanılamaz.
Bir kez tanıttı, bir anahtar kelime ayrılmış olarak kalır. Örneğin, ayrılmış anahtar sözcüğü uyumluluk düzeyi 90 tanıtılan, PIVOT da seviyeleri 100 ve 110 ayrılmıştır.
Bir uygulama, uyumluluk düzeyi için bir anahtar kelime olarak ayrılmış tanımlayıcı kullanıyorsa, uygulama başarısız olur. Bu sorunu gidermek için tanımlayıcı arasında ya da parantez içine alın ([]) veya tırnak işaretleri (""); Örneğin, uygulama yükseltme için tanımlayıcı kullanan dış uyumluluk düzeyi 90, tanımlayıcı olarak değişebilir [dış] ya "dış".
Daha fazla bilgi için, bkz. Ayrılmış anahtar sözcükler (Transact-sql).
İzinler
alter veritabanı izni gerektirir.
Örnekler
A.Uyumluluk düzeyini değiştirme
Aşağıdaki örnek uyumluluk düzeyini değiştirir AdventureWorks2012 veritabanı 110, SQL Server 2012.
ALTER DATABASE AdventureWorks2012
SET COMPATIBILITY_LEVEL = 110;
GO
ALTER DATABASE AdventureWorks2012
SET COMPATIBILITY_LEVEL = 110;
GO
Ayrıca bkz.
Başvuru
alter veritabanı (Transact-sql)
Ayrılmış anahtar sözcükler (Transact-sql)
Veritabanı (Transact-sql) oluştur