sp_dbcmptlevel (Transact-SQL)
Belirtilen sürüm , ile uyumlu olacak şekilde belirli veritabanı davranışları ayarlar SQL Server.
Önemli |
---|
Bu özellik Microsoft SQL Server'ın ilerideki bir sürümünde kaldırılacaktır. Yeni geliştirme işlerinde bu özelliği kullanmayın ve bu özelliği kullanmakta olan uygulamaları mümkün olduğunca erken bir zamanda değiştirin.Use alter database uyumluluk düzeyi onun yerine. |
Sözdizimi
sp_dbcmptlevel [ [ @dbname = ] name ]
[ , [ @new_cmptlevel = ] version ]
Bağımsız değişkenler
[ @dbname= ] name
Uyumluluk düzey değiştirilecek olan veritabanının adıdır.Veritabanı adları tanımlayıcıları kurallarına uyması gerekir.nameİş sysname, varsayılan değer null.[ @ new_cmptlevel= ] version
sürüm , SQL Server ile veritabanı olduğu için atölyeye uyumlu.versionİş tinyint, varsayılan değer null.Değer aşağıdakilerden biri olmalıdır:80 = SQL Server 2000
90 = SQL Server 2005
100 = SQL Server 2008
Dönüş Kodu Değerleri
0 (başarılı) veya 1 (hata)
Sonuç Kümeleri
Hiçbir parametre belirtilmezse veya name parametresi belirtilmezse, sp_dbcmptlevel bir hata döndürür.
name Olmadan belirtilen version, Veritabanı Altyapısı döndüren bir ileti görüntüleyerek geçerli Uyumluluk düzey belirtilen veritabanı.
Açıklamalar
Uyumluluğunu düzeylerinin açıklaması için bkz: alter database uyumluluk düzeyi (Transact-SQL).
İzinler
Yalnızca veritabanı sahibi, üyeleri sysadmin sabit sunucu rolüve db_owner (geçerli veritabanını değiştiriyorsanız) sabit veritabanı rolü için yürütmek bu yordamı.
Örnekler
A.SQL Server 2000 uyumluluk düzey değiştirme
Aşağıdaki örnek Uyumluluk düzey değiştirir AdventureWorks2008R2 veritabanına 80.
EXEC sp_dbcmptlevel AdventureWorks2008R2, 80;
GO
B.order by (Senaryo 1) üzerinde etkisi Uyumluluk düzey
Aşağıdaki örnekte, order by bağlama için 80 ve 90 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, varsayılan düzey, aşağıdaki SELECT... ORDER BY deyim sütun adı için bir hata üretir 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ı.
sp_dbcmptlevel tempdb, 80
SELECT c1, c2 AS c1
FROM SampleTable
ORDER BY c1;
GO
Aşağıdaki SELECT... ORDER By deyim çalışır her iki uyumluluk düzeyleri.
sp_dbcmptlevel tempdb, 80
SELECT c1, c2 AS c3
FROM SampleTable
ORDER BY c1;
GO
sp_dbcmptlevel tempdb, 90
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, varsayılan düzey, aşağıdaki SELECT...ORDER BY deyim , bir ek tablo önekini olduğundan hata üretir ORDER BY yan tümce.
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ı.
sp_dbcmptlevel tempdb, 80
SELECT c1 AS x
FROM SampleTable
ORDER BY SampleTable.x;
GO
Aşağıdaki SELECT...ORDER BY deyim her iki uyumluluk düzeyleri çalışır.
sp_dbcmptlevel tempdb, 80
SELECT c1 AS x
FROM SampleTable
ORDER BY x;
GO
sp_dbcmptlevel tempdb, 90
SELECT c1 AS x
FROM SampleTable
ORDER BY x;
GO