데이터베이스 엔진의 향상된 프로그래밍 기능
Microsoft SQL Server 2005는 프로그래머의 기능 및 생산성을 향상시켜 주는 데이터베이스 엔진의 몇 가지 새로운 기능과 향상된 기능을 제공합니다. 데이터베이스 개체는 Microsoft Visual C#과 같은 Microsoft .NET Framework 기반 언어를 사용하여 작성할 수 있습니다. 개발 및 디버깅 기능이 Microsoft Visual Studio 환경에 통합되어 있으므로 개발자는 .NET Framework 기반 구성 요소 및 서비스를 개발할 때 사용하는 것과 같은 도구를 사용하여 데이터베이스 개체를 개발할 수 있습니다. 향상된 오류 처리 및 재귀 쿼리 지원 등의 기능을 통해 Transact-SQL 언어가 향상되었습니다.
또한 응용 프로그램에서 데이터베이스 엔진 인스턴스에 액세스하기 위해 사용되는 데이터 액세스 인터페이스가 프로그래머의 생산성을 높일 수 있도록 향상되었습니다. 자세한 내용은 데이터 액세스 인터페이스의 향상된 기능을 참조하십시오.
Transact-SQL 언어의 주요 향상 기능은 다음과 같습니다. 새로운 Transact-SQL 기능에 대한 자세한 내용은 Transact-SQL의 새로운 기능 및 향상된 기능(Transact-SQL)을 참조하십시오.
향상된 프로그래밍 기능
Microsoft .NET Framework: 공용 언어 런타임 통합
SQL Server 데이터베이스 엔진에서는 Microsoft .NET Framework CLR(공용 언어 런타임)이 제공됩니다. 이 CLR 통합 환경에서는 Microsoft Visual C# 및 Visual Basic .NET과 같은 .NET Framework 기반 언어로 작성된 함수, 저장 프로시저 및 트리거를 비롯한 절차적 데이터베이스 개체를 사용할 수 있습니다. .NET Framework 기반 언어는 Transact-SQL 언어에서 사용할 수 없는 논리 및 기능을 지원하기 때문에 데이터베이스 개체에 이전보다 복잡한 논리를 사용할 수 있습니다. 또한 .NET Framework 기반 언어로 작성된 사용자 정의 유형 및 집계를 사용하여 이전 버전의 SQL Server에서 사용 가능했던 것보다 더 복잡한 데이터 형식을 작성할 수 있습니다.
CLR 통합 프로그래밍 환경이 Visual Studio 개발 환경으로 통합되었습니다. 개발자는 클라이언트 또는 중간 계층의 .NET 구성 요소 및 서비스를 개발할 때와 동일한 도구를 사용하여 데이터베이스 개체를 개발 및 디버깅할 수 있습니다.
자세한 내용은 Introduction to Common Language Runtime (CLR) Integration을 참조하십시오.
Microsoft .NET Framework: 사용자 정의 집계
.NET Framework 기반 언어로 작성된 사용자 정의 집계 함수는 Transact-SQL에 포함된 SUM, MIN 및 MAX와 같은 기본 집계 함수를 확장합니다. 집계 함수는 일부 데이터 값을 처리하여 단일 값을 반환하는 함수입니다. 응용 프로그램에서 전체 결과 집합을 가져와서 복잡한 집계 논리를 수행하는 대신 .NET Framework 집계 함수를 통해 데이터베이스 엔진 인스턴스에서 논리를 수행하고 최종 값만 응용 프로그램에 반환할 수 있습니다.
자세한 내용은 CLR User-Defined Aggregates를 참조하십시오.
Microsoft .NET Framework: 사용자 정의 유형
CLR UDT(사용자 정의 유형)를 사용하여 .NET Framework CRL에서 지원되는 모든 언어로 데이터베이스 데이터 형식을 구현할 수 있습니다. CLR 사용자 정의 유형은 .NET Framework 기반 언어에서 클래스로 구현되며 클래스의 필드, 메서드 및 속성으로 정의된 복잡한 동작 및 구조를 포함할 수 있습니다. CLR 사용자 정의 유형은 데이터베이스 엔진 유형 시스템에 통합되었으며 내장 유형이 사용되는 모든 컨텍스트에서 사용될 수 있습니다.
자세한 내용은 CLR User-Defined Types를 참조하십시오.
Microsoft .NET Framework: 저장 프로시저, 트리거 및 사용자 정의 함수
데이터베이스의 절차적 개체를 .NET Framework 기반 언어로 작성하여 Transact-SQL 언어에서 지원되는 것보다 복잡한 논리를 사용할 수 있습니다. 프로그래머는 .NET Framework 구성 요소 및 서비스를 개발할 때 사용하는 것과 같은 언어 및 개발 환경을 사용하여 개체를 개발합니다.
자세한 내용은 CLR Stored Procedures, CLR Triggers 및 CLR User-Defined Functions를 참조하십시오.
웹 액세스: 네이티브 HTTP SOAP 액세스
응용 프로그램으로부터 SOAP 요청을 보낼 수 있는 HTTP 끝점이나 주소를 사용하여 데이터베이스 엔진 인스턴스를 구성할 수 있습니다. Microsoft 인터넷 정보 서비스(IIS) 서버와 같은 중간 계층 서비스를 구성하지 않고도 데이터베이스 엔진 인스턴스에서 직접 패킷이 수신됩니다.
자세한 내용은 SQL Server 2005에서 네이티브 XML 웹 서비스 사용을 참조하십시오.
Transact-SQL의 향상된 기능: 새로운 xml 데이터 형식
데이터베이스 엔진은 데이터베이스에 XML 문서 및 조각을 저장할 수 있도록 지원하는 새로운 xml 데이터 형식을 제공합니다. XML 인스턴스는 xml 유형을 사용하여 생성된 열, 저장 프로시저 매개 변수 또는 변수에 저장할 수 있습니다.
자세한 내용은 xml 데이터 형식을 참조하십시오.
Transact-SQL의 향상된 기능: FOR XML의 향상된 기능
FOR XML 문을 중첩하여 XML 문서 계층을 만들 수 있습니다. FOR XML 문의 결과는 새로운 xml 데이터 형식을 사용하여 정의된 열, 저장 프로시저 매개 변수 또는 변수에 저장할 수 있습니다.
자세한 내용은 새 FOR XML 기능을 참조하십시오.
Transact-SQL의 향상된 기능: 향상된 오류 처리 기능
프로그래머는 Transact-SQL 일괄 처리, 저장 프로시저, 트리거 및 사용자 정의 함수를 코딩할 때 친숙한 TRY-CATCH 논리를 사용하여 오류 조건을 트래핑하고 처리할 수 있습니다.
자세한 내용은 데이터베이스 엔진 오류 처리를 참조하십시오.
Transact-SQL의 향상된 기능: 새로운 메타데이터 뷰
SQL Server 2005 데이터베이스 엔진은 메타데이터 쿼리를 위한 두 가지 새로운 뷰를 제공합니다. 시스템 카탈로그 뷰는 SQL Server 데이터베이스에 정의되어 있는 테이블과 같은 개체, 저장 프로시저 및 제약 조건에 대한 정보를 제공합니다. 동적 관리 뷰는 데이터베이스 엔진 인스턴스의 현재 상태에 대한 정보를 제공합니다. 동적 관리 뷰는 잠금, 스레드 및 작업에 대한 정보와 같이 디스크에 계속 유지되지 않는 메모리 구조의 정보를 제공합니다.
자세한 내용은 SQL Server 시스템 카탈로그 쿼리를 참조하십시오.
Transact-SQL의 향상된 기능: 순위 함수
데이터베이스 엔진은 순위 함수라고 부르는 새로운 종류의 함수를 제공합니다. 이 종류의 함수에는 다음이 포함됩니다.
- RANK
- DENSE_RANK
- NTILE
- ROW_NUMBER
이러한 함수는 파티션에서 각 행의 순위 값을 반환합니다.
이러한 함수 목록에 대한 자세한 내용은 순위 함수(Transact-SQL)를 참조하십시오.
Transact-SQL의 향상된 기능: DDL(데이터 정의 언어) 트리거
데이터를 수정하는 데이터 조작 언어 문(INSERT, UPDATE 및 DELETE)으로 실행되는 트리거 지원 외에도 데이터베이스 엔진에는 CREATE, ALTER 또는 DROP으로 시작하는 문과 같이 데이터베이스 개체를 수정하는 DDL 문으로 실행되는 새로운 종류의 트리거가 포함됩니다. DDL 트리거는 데이터베이스 스키마의 변경 내용을 감사 또는 제어하는 데 사용됩니다.
자세한 내용은 DDL 트리거를 참조하십시오.
Transact-SQL의 향상된 기능: 이벤트 알림
데이터베이스 엔진에서는 새로운 종류의 개체인 이벤트 알림을 프로그래밍할 수 있습니다. 이벤트 알림은 Transact-SQL DDL 문과 SQL Trace 이벤트에 대한 정보를 Service Broker 서비스에 보냅니다. 이벤트 알림은 데이터베이스에서 발생하는 변경 내용 또는 활동을 로깅하고 검토하는 데 사용됩니다. 이벤트 알림은 비동기적으로 실행되며 DML 트리거, DDL 트리거 및 SQL Trace를 프로그래밍 방식으로 구현할 수 있습니다.
자세한 내용은 이벤트 알림 구현을 참조하십시오.
Transact-SQL의 향상된 기능: 큐 처리 확장
Transact-SQL의 3가지 향상된 기능으로 느슨하게 연결되고, 안정적이며, 인터넷에 기반한 비즈니스 프로세스 자동화 시스템에서 메시지 큐 응용 프로그램을 쉽게 구축할 수 있습니다. INSERT, UPDATE 및 DELETE에 새롭게 지원되는 OUTPUT 절을 통해 문에서 수정된 행을 기반으로 데이터를 반환할 수 있습니다. UPDATE 및 DELETE 문에서 지정할 수 있는 READPAST는 이러한 문이 다른 작업에서 보유 중인 큐 행을 건너뛰고 큐에서 다음 행을 선택할 수 있도록 합니다.
자세한 내용은 OUTPUT 절(Transact-SQL) 및 잠금 힌트를 참조하십시오.
Transact-SQL의 향상된 기능: 통합 큰 개체 프로그래밍 모델
이전 버전의 SQL Server에서 8,060바이트를 넘는 큰 문자열은 짧은 문자열의 데이터 형식(예: char, nchar, varchar, nvarchar, binary 및 varbinary)과 프로그래밍 모델이 다른 text, ntext 및 image 데이터 형식에 저장해야 했습니다. 데이터베이스 엔진에는 이제 짧은 데이터 형식을 위한 MAX 길이 사양이 지원됩니다. MAX를 지정하면 데이터 형식에 text, ntext 및 image 값과 동일한 크기의 문자열을 최대 2GB까지 저장할 수 있지만 처리되는 방식은 짧은 문자열을 저장할 때와 동일합니다.
자세한 내용은 큰 값 데이터 형식 사용을 참조하십시오.
Transact-SQL의 향상된 기능: 재귀 쿼리
CTE(공통 테이블 식)는 SELECT, INSERT, UPDATE 또는 DELETE 문 실행 중에 임시적으로 저장되는 결과 집합입니다. CTE를 사용하면 재귀 쿼리를 사용할 수 있으며 임시 테이블 또는 뷰를 사용할 필요가 없어서 논리를 단순하게 만들 수 있습니다.
자세한 내용은 공통 테이블 식 사용을 참조하십시오.
Transact-SQL의 향상된 기능: 새로운 APPLY 연산자
APPLY 연산자는 다른 외부 테이블 참조에 의해 반환된 각 행에 대해 테이블 값 식(예: 테이블 값 함수 또는 하위 쿼리)을 호출할 수 있습니다. 테이블 값 식은 외부 테이블 참조의 각 행에 대해 계산됩니다.
자세한 내용은 APPLY 사용을 참조하십시오.
Transact-SQL의 향상된 기능: 새로운 PIVOT 및 UNPIVOT 연산자
새로운 PIVOT 및 UNPIVOT 연산자는 열을 행으로 만들고 행을 열로 만드는 방식으로 결과 집합을 순환시킵니다. 이를 데이터 순환 또는 교차 탭 보고서 생성이라고 부릅니다. 초기 버전의 SQL Server에서도 이러한 연산자를 사용할 수 있었지만 복잡한 논리가 필요했습니다. 이제는 PIVOT 및 UNPIVOT을 사용하여 이러한 논리를 간단하게 만들 수 있습니다.
자세한 내용은 PIVOT 및 UNPIVOT 사용을 참조하십시오.
Transact-SQL의 향상된 기능: 쿼리 알림
쿼리 알림을 사용하면 응용 프로그램에서 결과 집합을 캐시하고 다른 응용 프로그램에 의해 기본 데이터가 수정된 경우 이를 알리도록 데이터베이스 엔진에 요청할 수 있습니다. 응용 프로그램에서 쿼리 알림을 사용하면 데이터베이스의 데이터 상태를 주기적으로 확인할 필요가 없습니다. 단지 데이터베이스 엔진에서 변경 내용이 보고될 경우 데이터의 유효성만 검사하면 됩니다.
자세한 내용은 쿼리 알림 사용을 참조하십시오.
Transact-SQL의 향상된 기능: OPENROWSET의 대량 작업
OPENROWSET에는 이제 데이터 파일에서 데이터를 대량으로 복사할 수 있는 BULK 작업이 지원됩니다. OPENROWSET 대량 작업은 BULK_BATCHSIZE 및 FORMATFILE과 같은 새로운 테이블 참고와 대량 작업 옵션을 사용하여 제어됩니다. 새로운 bulk_column_alias 절은 데이터 대량 작업을 위한 열 이름 할당을 지원합니다.
자세한 내용은 OPENROWSET(Transact-SQL) 및 테이블 힌트(Transact-SQL)를 참조하십시오.
Transact-SQL의 향상된 기능: TOP의 향상된 기능
TOP 연산자가 향상되어 연산자에 의해 반환되는 행 개수를 지정할 때 정수 숫자 외에도 모든 숫자 식(예: 변수 이름)을 사용할 수 있습니다. 또한 TOP를 INSERT, UPDATE 및 DELETE 문에도 지정할 수 있습니다.
자세한 내용은 TOP(Transact-SQL)를 참조하십시오.
Transact-SQL의 향상된 기능: 분산 쿼리
EXECUTE 문은 이제 연결된 서버에서 저장 프로시저를 실행하도록 지정하는 AT LinkedServer 절을 지원합니다. CONTAINS 전체 텍스트 조건자는 연결된 서버에 대해 쿼리를 실행하기 위해 4부분으로 구성된 이름을 지원합니다. 또한 분산 쿼리는 새로운 큰 개체 데이터 형식인 nvarchar(max), varchar(max) 및 **varbinary(max)**를 지원합니다. 분산 쿼리 및 OLE DB 공급자의 상호 작용을 분석하기 위해 새로운 SQL Trace 이벤트가 추가되었습니다.
자세한 내용은 EXECUTE(Transact-SQL), CONTAINS(Transact-SQL), 분산 쿼리에 데이터 형식 매핑 및 OLEDB 이벤트 범주를 참조하십시오.
Transact-SQL의 향상된 기능: TABLESAMPLE
새로운 TABLESAMPLE 절은 쿼리에서 처리되는 행 개수를 제한합니다. 결과 집합에서 일부 상위 행만 반환하는 TOP와는 달리 TABLESAMPLE은 쿼리에서 처리된 행 집합으로부터 선택된 행을 반환합니다.
자세한 내용은 TABLESAMPLE을 사용하여 결과 집합 제한을 참조하십시오.
Transact-SQL의 향상된 기능: 새로운 CASCADE 무결성 제약 조건
REFERENCES 절은 이제 SET NULL 및 SET DEFAULT 연계 참조 무결성 작업을 지원합니다. SET NULL은 연계 참조 무결성 작업이 외래 키를 NULL로 설정하도록 지정합니다. SET DEFAULT는 외래 키가 열에 대해 정의된 기본값으로 설정되도록 지정합니다.
자세한 내용은 연계 참조 무결성 제약 조건을 참조하십시오.
Transact-SQL의 향상된 기능: 페이지 크기를 초과하는 오버플로 데이터 지원
nvarchar, varchar, varbinary 및 sql_variant 데이터 형식을 사용하는 가변 길이 열이 포함된 행은 8,060바이트 제한을 초과할 수 있습니다. 이러한 가변 길이 열의 조합된 너비로 인해 행이 페이지의 크기 제한을 초과하면 데이터베이스 엔진은 데이터를 가변 길이 열에서 별개의 페이지로 이동할 수 있습니다.
자세한 내용은 8KB를 초과하는 행 오버플로 데이터를 참조하십시오.
데이터베이스 관리 프로그래밍: 새로운 SMO(SQL Server Management Objects) API
DMO(Distributed Management Objects) 개체 모델 대신 확장된 SMO 개체 모델이 사용됩니다. SMO 개체 모델은 데이터베이스 엔진 인스턴스를 구성 및 관리하기 위한 클래스를 제공합니다. RMO(Replication Management Objects) 개체 모델은 SMO 개체 모델에 대한 보완적 모델로서 복제 구성 및 관리를 위한 클래스를 제공합니다.
자세한 내용은 SQL Server Management Objects (SMO)를 참조하십시오.
데이터베이스 관리 프로그래밍: 새로운 SQL Server WMI 공급자
컴퓨터 관리용 WMI 공급자는 인스턴스 공급자입니다. 이 계층의 목적은 서버 및 클라이언트 네트워크 유틸리티 기능에서 요청되는 레지스트리 작업을 관리하고 컴퓨터 관리자 스냅인 구성 요소의 선택된 SQL 서비스에 대한 제어 및 조작을 향상시켜 주는 통합 API 호출 상호 작용 방식을 제공하는 것입니다.
자세한 내용은 WMI Provider for Configuration Management를 참조하십시오.
서버 이벤트용 WMI 공급자는 WMI(Windows Management Instrumentation)를 사용하여 SQL Server의 이벤트를 모니터링할 수 있도록 합니다. 이 공급자는 SQL Server를 관리 WMI 개체로 전환하여 작동됩니다. 이 공급자를 사용하는 WMI에서는 SQL Server에서 이벤트 알림을 생성할 수 있는 모든 이벤트를 사용할 수 있습니다. 또한 WMI와 상호 작용하는 관리 응용 프로그램인 SQL Server 에이전트에서 이러한 이벤트에 응답할 수 있기 때문에 이전 버전의 SQL Server 에이전트에서 처리하던 이벤트보다 다양한 이벤트를 처리할 수 있습니다.
자세한 내용은 WMI Provider for Server Events를 참조하십시오.