sp_dbcmptlevel (języka Transact-SQL)
Ustawia niektóre zachowania bazy danych, aby były zgodne z określonej wersja programu SQL Server.
Waż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. |
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.
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