sp_dbcmptlevel (języka Transact-SQL)

Ustawia niektóre zachowania bazy danych, aby były zgodne z określonej wersja programu SQL Server.

Ważna informacjaWażne:

Ta funkcja zostanie usunięta z przyszłej wersji programu Microsoft SQL Server. Nie należy stosować tej funkcji w nowych projektach oraz jak najszybciej należy zmodyfikować aplikacje, w których obecnie jest używana ta funkcja.Użycie Zmienić poziom zgodności bazy danych zamiast.

Ikona łącza do tematuJęzyka Transact-SQL składni konwencje

Składnia

sp_dbcmptlevel [ [ @dbname = ] name ] 
    [ , [ @new_cmptlevel = ] version ]

Argumenty

  • [ @dbname= ] name
    Jest to nazwa bazy danych, dla którego ma zostać zmieniony poziom zgodności.Nazwy bazy danych muszą być zgodne z zasadami identyfikatory.namejest sysname, domyślna wartość NULL.

  • [ @ new_cmptlevel= ] version
    wersja SQL Server , z którym baza danych jest dokonywane zgodny.versionjest tinyint, domyślna wartość NULL.Wartość musi być jedną z następujących czynności:

    80 = SQL Server 2000 

    90 = SQL Server 2005 

    100 = SQL Server 2008 

Wartości kodów powrotnych

0 (sukces) lub 1 (błąd)

Zestawy wyników

Jeśli nie określono żadnych parametrów lub name nie określono parametru sp_dbcmptlevel zwraca błąd.

Jeśli name jest określona bez version, Aparat baz danych zwraca komunikat wyświetlanie bieżącego zgodności poziom określonej bazy danych.

Uwagi

Zobacz opis poziomów compatibilities ZMIENIA poziom zgodności bazy danych (Transact-SQL).

Uprawnienia

Tylko właściciel bazy danych, członkowie sysadmin stała rola serwerai db_owner stałą rola bazy danych (Jeśli zmieniasz bieżącej bazy danych) można wykonać tę procedurę.

Przykłady

A.Zmiana zgodności poziom SQL Server 2000

Poniższy przykład przedstawia zmianę poziom zgodności z AdventureWorks2008R2 bazy danych do 80.

EXEC sp_dbcmptlevel AdventureWorks2008R2, 80;
GO

B.Wpływ poziom zgodności na ORDER BY (scenariusz 1)

Poniższy przykład ilustruje różnicę w kolejności przez powiązanie poziomy zgodności 80 i 90.W przykładzie zostanie utworzony przykładowej tabela SampleTable, tempdb bazy danych.

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

Zgodność poziom 90, domyślny poziom, poniżej SELECT... ORDER BY instrukcja generuje błąd, ponieważ nazwa kolumna w AS klauzula c1, jest niejednoznaczny.

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

Po przywróceniu bazy danych do zgodności poziom80, tym samym SELECT... ORDER BYpowiedzie sięinstrukcja .

sp_dbcmptlevel tempdb, 80
SELECT c1, c2 AS c1
    FROM SampleTable
    ORDER BY c1;
GO

Następujące SELECT... ORDER By instrukcja działa w obu poziomów zgodności.

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.Wpływ poziom zgodności na ORDER BY (scenariusz 2)

Zgodność poziom 90, domyślny poziom, poniżej SELECT...ORDER BY instrukcja generuje błąd, ponieważ prefiks tabela , w ORDER BY klauzula.

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

Po bazy danych jest resetowany do zgodności poziom80, tym samym SELECT...ORDER BYpowiedzie sięinstrukcja .

sp_dbcmptlevel tempdb, 80
SELECT c1 AS x
    FROM SampleTable
    ORDER BY SampleTable.x;
GO

Następujące SELECT...ORDER BY instrukcja działa w obu poziomów zgodności.

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