sp_dbcmptlevel(Transact-SQL)
특정 데이터베이스 동작이 지정된 버전의 SQL Server와 호환되도록 설정합니다.
중요 |
---|
Microsoft SQL Server의 이후 버전에서는 이 기능이 제거됩니다. 새 개발 작업에서는 이 기능을 사용하지 말고, 현재 이 기능을 사용하는 응용 프로그램은 가능한 한 빨리 수정하십시오. 대신 호환성 수준을 사용하십시오. |
구문
sp_dbcmptlevel [ [ @dbname = ] name ]
[ , [ @new_cmptlevel = ] version ]
인수
[ @dbname= ] name
호환성 수준을 변경할 데이터베이스의 이름입니다. 데이터베이스 이름은 식별자 규칙을 따라야 합니다. name은 sysname이며 기본값은 NULL입니다.[ @new_cmptlevel= ] version
데이터베이스가 호환되도록 설정할 SQL Server의 버전입니다. version은 tinyint이며 기본값은 NULL입니다. 값은 다음 중 하나여야 합니다.80 = SQL Server 2000
90 = SQL Server 2005
100 = SQL Server 2008
반환 코드 값
0(성공) 또는 1(실패)
결과 집합
매개 변수를 지정하지 않거나 name 매개 변수를 지정하지 않으면 sp_dbcmptlevel에서 오류를 반환합니다.
version 없이 name을 지정하면 데이터베이스 엔진에서는 지정한 데이터베이스의 현재 호환성 수준을 표시하는 메시지를 반환합니다.
사용 권한
데이터베이스 소유자, sysadmin 고정 서버 역할 및 db_owner 고정 데이터베이스 역할(현재 데이터베이스를 변경하려는 경우)의 멤버만 이 프로시저를 실행할 수 있습니다.
예
1. SQL Server 2000으로 호환성 수준 변경
다음 예에서는 AdventureWorks 데이터베이스의 호환성 수준을 80으로 변경합니다.
EXEC sp_dbcmptlevel AdventureWorks, 80;
GO
2. ORDER BY에 호환성 수준이 미치는 결과(시나리오 1)
다음 예에서는 호환성 수준 80과 90에서 ORDER BY 바인딩의 차이를 보여 줍니다. 이 예에서는 tempdb 데이터베이스에 SampleTable 예제 테이블을 만듭니다.
USE tempdb;
CREATE TABLE SampleTable(c1 int, c2 int);
GO
기본 수준인 호환성 수준 90에서 다음 SELECT... ORDER BY 문은 AS 절의 열 이름인 c1이 모호하기 때문에 오류를 생성합니다.
SELECT c1, c2 AS c1
FROM SampleTable
ORDER BY c1;
GO
데이터베이스를 호환성 수준 80으로 다시 설정하면 동일한 SELECT... ORDER BY 문이 제대로 실행됩니다.
sp_dbcmptlevel tempdb, 80
SELECT c1, c2 AS c1
FROM SampleTable
ORDER BY c1;
GO
다음 SELECT... ORDER BY 문은 두 호환성 수준에서 모두 실행됩니다.
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
3. ORDER BY에 호환성 수준이 미치는 결과(시나리오 2)
기본 수준인 호환성 수준 90에서 다음 SELECT...ORDER BY 문은 ORDER BY 절에 추가 테이블 접두사가 있기 때문에 오류를 생성합니다.
SELECT c1 AS x
FROM SampleTable
ORDER BY SampleTable.x;
GO
데이터베이스를 호환성 수준 80으로 다시 설정하면 동일한 SELECT...ORDER BY 문이 제대로 실행됩니다.
sp_dbcmptlevel tempdb, 80
SELECT c1 AS x
FROM SampleTable
ORDER BY SampleTable.x;
GO
다음 SELECT...ORDER BY 문은 두 호환성 수준에서 모두 실행됩니다.
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