sp_dbcmptlevel (Transact-SQL)

Belirtilen sürüm , ile uyumlu olacak şekilde belirli veritabanı davranışları ayarlar SQL Server.

Önemli notÖ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.

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

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