데이터베이스 개발자를 위한 SQL Server 2005 개요

Matt Nunn

Microsoft Corporation

적용 대상:

   Microsoft SQL Server 2005

   SQL Server 데이터베이스 개발

   Microsoft .NET Framework

   Microsoft Visual Studio 2005

   Microsoft ADO.NET 2.0

요약 : 이 기사에서는 Microsoft SQL Server 2005의 새로운 데이터베이스 개발 기능에 대한 개요를 제공합니다

목차

데이터베이스 개발의 새로운 패러다임
.NET Framework 통합
XML 기술
새로운 응용 프로그램 프레임워크
향상된 언어
결론

데이터베이스 개발의 새로운 패러다임

Microsoft SQL Server 2005 Beta 2의 릴리스와 함께 데이터베이스 개발 분야가 새롭게 변화하고 있습니다. 데이터베이스 개발자는 이제 코드를 기능에 맞도록 적절하게 배치하여 XML 같은 원시 형식의 데이터에 액세스하거나 데이터베이스 서버 중심의 복잡한 시스템을 구축할 수 있습니다. 데이터베이스 개발은 그 어느 때보다 효율적으로 통합되고 있으며, 개발자는 필요한 모든 도구를 편리하게 사용할 수 있습니다.

이 기사에서는 개발자가 새로운 클래스의 데이터베이스 응용 프로그램을 구축할 수 있는 SQL Server 2005의 새 기능 중 몇 가지에 대해 설명합니다.

.NET Framework 통합

Microsoft SQL Server 2005 Beta 2가 출시됨으로써 데이터베이스 프로그래머는 Microsoft .NET Framework 클래스 라이브러리와 최신 프로그래밍 언어를 최대한 활용하여 서버 내에서 기능을 구현할 수 있게 되었습니다. 데이터베이스 개발자는 CLR(공용 언어 런타임) 통합을 사용하여 저장 프로시저, 함수 및 트리거를 선택한 .NET Framework 언어로 코드화할 수 있습니다. Microsoft Visual Basic .NET 및 C# 프로그래밍 언어는 모두 개체 지향 구문, 구조적 예외 처리, 배열, 네임스페이스 및 클래스를 제공합니다. 뿐만 아니라 .NET Framework는 서버 쪽에서 쉽게 사용할 수 있는 광범위한 기본 제공 기능을 갖춘 수천 개의 클래스 및 메서드를 제공합니다. Transact-SQL에서는 수행하기 곤란했거나 어려웠던 여러 가지 작업을 관리되는 코드를 사용하여 보다 효율적으로 완수할 수 있습니다. 또한 새로운 두 가지 데이터베이스 개체 형식(집계 및 사용자 정의 형식)을 사용할 수 있습니다. 개발자는 이미 습득한 지식 및 기술을 보다 효율적으로 사용하여 in-process 코드를 작성할 수 있게 되었습니다. 요약하자면 SQL Server 2005 Beta 2를 통해 개발자는 데이터베이스 서버를 확장하여 백엔드에서 적절한 계산 및 작업을 보다 쉽게 수행할 수 있습니다.

SQL Server와 CLR 간의 이러한 통합으로 인해 여러 가지 주요 이점이 제공됩니다.

  • 향상된 프로그래밍 모델: .NET Framework와 호환되는 프로그래밍 언어는 여러 가지 면에서 Transact-SQL보다 풍부하므로 SQL 개발자가 이전에는 사용할 수 없었던 구문 및 기능을 제공합니다.

  • 향상된 안전성 및 보안: 관리되는 코드는 데이터베이스 엔진이 호스트하는 CLR 환경에서 실행됩니다. 따라서 .NET Framework 데이터베이스 개체는 이전 버전의 SQL Server에서 사용할 수 있었던 확장된 저장 프로시저보다 안전하고 보안이 강화되어 있습니다.

  • 사용자 정의 형식 및 집계: CLR을 호스트함으로써 SQL Server의 저장소 및 쿼리 기능을 확장하는 두 개의 새 데이터베이스 개체를 사용할 수 있습니다.

  • 공용 개발 환경: 데이터베이스 개발은 Microsoft Visual Studio 2005 개발 환경에 통합됩니다. 개발자는 중간 계층 또는 클라이언트 계층 .NET Framework 구성 요소 및 서비스를 작성할 때 사용하는 것과 동일한 도구를 사용하여 데이터베이스 개체 및 스크립트를 개발 및 디버깅할 수 있습니다.

  • 성능 및 확장성: 관리되는 코드는 실행 이전에 네이티브 코드로 컴파일되므로 일부 시나리오에서 성능이 크게 향상될 수 있습니다.

개발자는 CLR 통합을 사용함으로써 Visual Basic .NET 및 C# 같은 언어를 사용하여 논리가 좀 더 복잡하며 계산 작업에 보다 적합한 코드를 작성할 수 있습니다. 또한 Visual Basic .NET 및 C#은 캡슐화, 상속 및 다형성 같은 개체 지향 기능을 제공합니다. 이제 관련 코드를 클래스와 네임스페이스로 쉽게 구성할 수 있습니다. 즉, 매우 많은 양의 코드로 작업을 할 때 소요되는 시간을 보다 쉽게 구성 및 유지할 수 있습니다. 코드를 어셈블리 및 네임스페이스로 논리적, 물리적으로 구성할 수 있는 기능은 매우 큰 이점이며, 이를 통해 대형 데이터베이스 구현에서 서로 다른 코드 조각을 좀 더 효과적으로 찾아 연결할 수 있습니다.

관리되는 코드는 숫자 처리 및 복잡한 실행 논리 관리 면에서 Transact-SQL보다 훨씬 효율적이며 문자열 처리, 정규식 등을 광범위하게 지원합니다. 또한 .NET Framework 클래스 라이브러리에서 사용할 수 있는 기능을 통해 데이터베이스 개발자는 저장 프로시저, 트리거 또는 사용자 정의 함수에서 쉽게 액세스할 수 있는 미리 구성된 수천 가지 클래스 및 루틴에 모두 액세스할 수 있게 되었습니다. 향상된 문자열 처리 함수, 수학 함수, 날짜 연산, 시스템 리소스 액세스, 고급 암호화 알고리즘, 파일 액세스, 이미지 처리 및 XML 데이터 조작에 이르기까지 모든 항목을 관리되는 저장 프로시저, 함수, 트리거 및 집계에서 쉽게 액세스할 수 있습니다.

관리되는 코드의 주요 이점 중 하나는 형식 안전성입니다. 관리되는 코드가 실행되기 전에 CLR은 "확인"이라는 프로세스를 통해 여러 가지 검사를 수행하여 코드를 실행하는 것이 안전한지 확인합니다. 예를 들어 코드를 검사하여 쓰여지지 않은 메모리를 읽는 일이 없도록 확인합니다.

Transact-SQL과 관리되는 코드 중에서 선택

이제 저장 프로시저, 트리거 및 사용자 정의 함수를 작성하는 경우 개발자는 일반 Transact-SQL을 사용할 것인지 아니면 Visual Basic .NET 또는 C# 같은 .NET Framework와 호환되는 프로그래밍 언어를 사용할 것인지 결정해야 합니다. 이 결정은 상황에 따라 달라집니다. Transact-SQL을 사용하는 것이 좋은 경우가 있는 반면, 관리되는 코드를 사용하는 것이 좋은 경우도 있습니다.

코드가 기본적으로 수행하는 작업이 절차 논리가 없거나 적은 데이터 액세스일 경우에는 Transact-SQL을 사용하는 것이 적절합니다. .NET Framework와 호환되는 프로그래밍 언어는 컴퓨팅이 많이 필요한 함수 및 복잡한 논리가 포함된 프로시저, 또는 .NET Framework 클래스 라이브러리를 활용하려는 상황에 적합합니다.

코드 배치도 중요합니다. Transact-SQL 및 관리되는 코드는 모두 서버에서 실행됩니다. 따라서 기능과 데이터가 서로 밀접하게 배치되며 사용자가 서버의 처리 능력을 활용할 수 있습니다. 이는 데이터와 중간 계층 사이의 트래픽을 줄이므로 유용합니다. 데이터와 근접한 위치에서 컴퓨팅 작업을 간단히 수행할 수 있으므로, I/O가 많은 시스템에서는 이러한 방법이 매우 유용합니다. CLR 함수는 실행을 병렬 처리 및 최적화할 수 있는 SQL Server 쿼리 프로세서를 활용할 수도 있습니다. 반면에 프로세서를 많이 사용하는 작업을 데이터베이스 서버에 배치하지 않을 수도 있습니다. 오늘날 대부분의 클라이언트 컴퓨터는 성능이 매우 뛰어나므로 클라이언트에 최대한 많은 코드를 배치하여 이 처리 능력을 활용할 수도 있습니다. 어떤 선택을 하든 모든 경우를 만족할 수는 없습니다.

웹 서비스

SQL Server 2005에서 개발자는 SQL Server를 HTTP 수신기로 만들어 데이터베이스 계층에서 XML 웹 서비스를 개발할 수 있습니다. 이는 웹 서비스 중심 응용 프로그램에 대한 새로운 유형의 데이터 액세스 기능을 제공합니다. Microsoft SQL Server 2005 Beta 2에서는 Microsoft IIS(인터넷 정보 서비스) 같은 중간 계층 수신기를 사용하지 않고도 HTTP를 사용하여 SQL Server에 직접 액세스할 수 있습니다. SQL Server는 웹 서비스 인터페이스를 통해 SQL 문을 실행하고 함수 및 프로시저를 호출할 수 있도록 합니다. 쿼리 결과는 XML 형식으로 반환되며 Visual Studio의 웹 서비스 인프라를 활용할 수 있습니다 .

ADO.NET

다음 버전의 ADO.NET에는 여러 가지 새로운 기능이 있습니다. 새로운 쿼리 변경 알림 지원에서 MARS(다중 활성 결과 집합)에 이르기까지, ADO.NET은 데이터 집합 액세스 및 조작을 발전시켜 더욱 뛰어난 확장성과 융통성을 달성합니다.

ADO.NET 알림 지원

SQL Server 2005 Beta 2에서는 SQL Server 쿼리에 대한 알림을 지원합니다. 이 지원을 사용하여 SQL Server에 명령을 보내고, 동일한 명령을 다시 실행할 때 처음 얻은 결과와 다른 결과가 나오는 경우 알림을 생성하도록 요청할 수 있습니다. 이는 원본 데이터가 변경되는 때를 감지하는 종속성 개체를 사용하여 가능하도록 할 수 있습니다. ADO.NET, OLE DB, ODBC(Open Database Connectivity), Microsoft ADO(ActiveX Data Objects) 또는 SOAP 같은 클라이언트 API를 통해 서버로 보내진 명령에는 알림이 필요한 태그가 포함되어 있을 수 있습니다. 요청의 일부분으로 실행된 각 문에 대해 서버는 요청에 포함된 각 문마다 한 번만 실행되는 "알림 구독"을 만듭니다. 알림은 응용 프로그램이 폴링할 수 있는 SQL Service Broker(서비스 브로커) 대기열을 통해 배달되며 알림을 사용할 수 있을 때마다 반환되는 활성화 서비스 또는 차단 문을 사용합니다. 쿼리 알림은 데이터베이스 중심 웹 사이트 같은 응용 프로그램에서 결과를 캐싱하는 데 유용합니다.

다중 활성 결과 집합

MARS(다중 활성 결과 집합)는 요청당 여러 개의 보류 요청이 있을 수 있도록 합니다. 특히 연결당 여러 개의 기본 결과 집합이 열려 있을 수 있습니다. 기본 결과 집합은 전달 전용/읽기 전용 결과 집합입니다. 기본 결과 집합의 경우 클라이언트 드라이버는 대형 청크(테이블 형식 데이터 스트림 버퍼 크기 청크)에서 데이터를 있는 그대로 검색하여 서버 커서의 경우처럼 서버와 정보를 주고 받지 않고도 응용 프로그램 요청이 충족되도록 합니다. 응용 프로그램은 성능 저하 없이도 한 번에 한 행씩 프로그래밍하는 간단한 모델을 사용할 수 있습니다.

다중 활성 결과 집합 기능은 열린 기본 결과 집합이 전체 결과 집합이 사용될 때까지 드라이버가 서버에 요청을 보내지 못하도록 차단하는 현재 제한을 제거합니다.

스냅숏 격리 지원

SQL Server 2005 Beta 2에서는 새로운 스냅숏 격리 수준을 제공합니다. 스냅숏 격리는 데이터 판독기를 위해 데이터 버전을 저장하는 행 버전 지정 메커니즘입니다. 이 새로운 격리 수준은 다음과 같은 이점을 제공합니다.

  • 읽기 전용 응용 프로그램을 위한 데이터 가용성 향상. OLTP 환경에서 차단되지 않은 읽기 작업이 가능합니다.

  • 쓰기 트랜잭션을 위한 필수적인 자동 충돌 감지

  • Oracle에서 SQL Server로의 응용 프로그램 마이그레이션 단순화

예를 들어 잠금 작업을 수행하면 동일한 데이터를 동시에 읽고 쓰는 중인 응용 프로그램들이 서로 차단될 수 있습니다. 한 트랜잭션이 행을 변경하는 경우 다른 트랜잭션은 쓰기가 커밋될 때까지 그 행을 읽을 수 없습니다. 스냅숏 격리를 사용하면 판독기가 이전에 커밋된 행 값에 액세스할 수 있습니다.

스냅숏 격리 수준은 ADO, OLE DB, SQLOLEDB, Shape Provider, SQLODBC, OLE DB Managed Provider 및 SQL Managed Provider를 통해 지원되고 노출됩니다.

SQL Management Objects

SMO(SQL Management Objects) 모델은 SQL Server 2005의 관리 개체 모델로서 SQL Server 관리 개체 모델이 디자인 및 아키텍처 면에서 크게 향상된 것입니다. 이는 사용은 쉬우면서도 .NET Framework 관리되는 코드를 기반으로 하는 풍부한 개체 모델입니다. SMO는 .NET Framework를 사용하는 데이터베이스 관리 응용 프로그램을 개발하기 위한 기본 도구입니다. SMO는 SQL Server Management Studio의 모든 대화 상자에서 사용되며 SQL Server Management Studio에서 수행할 수 있는 모든 관리 작업은 SMO를 사용하여 수행할 수도 있습니다.

새 SMO 개체 모델 및 Microsoft WMI(Windows Management Instrumentation) API는 SQL-DMO를 대체합니다. 가능한 경우 SMO는 사용하기 쉽도록 비슷한 개체를 SQL-DMO로 통합합니다. SQL Server 2005 Beta 2에서 SQL-DMO를 계속 사용할 수도 있지만 SQL-DMO는 SQL Server 2005 고유의 기능을 관리하도록 업데이트되지 않습니다.

SMO 및 SQL-DMO

SMO 개체 모델은 SQL-DMO에서 수행한 작업이 논리적으로 이어지는 것입니다. SMO는 SQL-DMO와 기능이 호환되며 다수의 동일 개체를 포함하고 있습니다. 가능한 경우 원래 SQL-DMO 디자인을 따르지만, SMO에는 SQL-DMO보다 더 뛰어난 여러 가지 추가 기능이 있습니다. SQL Server 2005의 최대 DDL(데이터 정의 언어) 및 관리 범위를 달성하기 위해 SMO에는 150개 이상의 새 클래스가 추가되었습니다.

SMO의 주요 장점은 성능과 확장성입니다. SMO에는 캐시된 개체 모델이 있으므로 개체의 여러 가지 속성을 변경해 본 후에 변경 내용을 SQL Server에 적용할 수 있습니다. 따라서 SMO에서는 서버와 정보를 주고 받는 양이 적으므로 개체를 더욱 융통성 있게 사용할 수 있습니다. 또한 SMO의 인스턴스 생성 작업은 최적화되어 있습니다. 즉, 개체를 전체적 또는 부분적으로 인스턴스화할 수 있습니다. 개체의 모든 속성을 인스턴스화하지 않으므로 많은 개체를 빨리 로드할 수 있습니다.

만들어진 모든 서버 개체에 대한 참조를 유지하는 응용 프로그램 루트 디렉터리가 하나인 SQL-DMO와 달리 SMO에서는 새 연결을 설정하지 않고도 서버에 여러 루트를 설정할 수 있습니다. SMO는 SQL-DMO 스타일 스크립팅을 지원할 뿐 아니라 고급 다중 위상 스크립팅도 구현합니다. 변경 내용을 서버에 실제로 적용하지 않으면서 개체를 캡처 모드로 전환하고 해당 개체에 대해 내보내는 모든 DDL을 캡처할 수도 있습니다.

SQL-DMO에는 SMO 개체 인터페이스를 통해 WMI 모니터링 및 서버 구성을 지원하기 위해 WMI에 대한 인터페이스를 단순화하는 관리되는 컴퓨터 개체도 있습니다.

XML 기술

XML은 데이터를 저장하고 전송하는 일반적인 형식이 되었으며 마크업, 구조적 또는 반구조적 정보에 널리 사용되고 있습니다. 이러한 종류의 데이터에 대한 예로는 텍스트(문서 구조 및 강조를 식별하도록 마크업), 포함된 개체(구조적), 한 인스턴스에서 다른 인스턴스로 구조를 변경할 수 있는 유형이 다른 데이터(반구조적)를 들 수 있습니다. 또한 XML은 로컬 네트워크 및 인터넷을 통해 서로 다른 응용 프로그램 간에 데이터를 보급하는 중요한 표준으로 널리 인정받고 있습니다.

Microsoft SQL Server 2000은 관계형 데이터를 XML 형식으로 변환할 수 있도록 하고 XML 데이터를 관계형 테이블에 저장하는 Microsoft SQLXML을 통해 XML의 사용을 지원합니다. Microsoft SQL Server 2005 Beta 2는 XML을 최고급 데이터 형식으로 지원하는 것은 물론 XML 문서의 새 쿼리 언어를 제공하고 현재 위치에서의 수정을 허용함으로써 이 기능을 기반으로 빌드되어 있습니다.

XML 데이터를 사용하여 작업하는 사용자의 요구를 보다 잘 지원할 수 있도록 새로운 XML 데이터 형식이 도입되었습니다. 이 데이터 형식에는 현재 마지막 호출에 있는 XQuery(XML Query)의 중요한 하위 집합을 구현하는 query(), exist(), value(), nodes() modify() 메서드가 있습니다. 사실, 이 사양은 SQL Server 2005 Beta 2에서 XML 데이터 수정 구문이 추가됨으로써 더욱 확장되었습니다. XML 입력을 지원하도록 XML 스키마 등록 및 관리를 위한 키워드가 추가되었습니다. SQL Server 2000에서 관계형 데이터로부터 XML을 생성하거나 XML로부터 관계형 데이터를 생성하기 위해 도입된 두 기능인 FOR XML 및 OPENXML에도 변화가 있습니다. XML 데이터 형식에 대한 지원 덕분에 기능이 향상되었습니다.

XML 데이터 형식

XML은 SQL Server에서 지원하는 스칼라 형식에 국한되지 않은 복잡한 데이터를 모델링할 수 있습니다. 따라서 char 또는 varchar 같은 문자열 기반의 기본 제공 데이터 형식은 XML의 강력한 기능과 여러 가지 이점을 모두 효율적으로 활용하기에는 부족합니다. 예를 들어 XML이 문자열로 저장된 경우 전체 문서를 삽입 또는 선택하거나 전체 문서에서 연속된 바이트를 검색할 수는 있지만 문서 자체의 내용을 쿼리할 수는 없습니다. XML 데이터 형식을 제공함으로써 SQL Server 2005는 사용자가 XML 문서의 일부분을 쿼리하고, 문서가 XML 스키마를 준수하는지 확인하고, XML 문서의 내용을 현재 위치에서 수정할 수도 있도록 합니다. SQL Server 2000에서는 불가능한 방법으로 일반적인 관계형 데이터를 비구조적 또는 반구조적 XML 문서의 데이터와 통합하기도 합니다. SQL Server 2005에서는 효율적으로 구문을 다시 분석할 수 있고 어느 정도의 압축이 가능한 내부 표시에서 XML 데이터가 BLOB(이진 대형 개체)로 저장됩니다.

XML 스키마의 집합을 XML 형식의 열에 연결할 수 있습니다. 그러면 제약 조건, 삽입 및 업데이트에 대한 유효성 검사와 저장된 XML 내부의 값 입력은 물론 저장소 및 쿼리 처리에 대한 최적화 작업도 수행할 수 있습니다. SQL Server 2005에서는 서버에서 스키마를 관리하기 위한 여러 가지 DDL 문도 제공합니다.

XML 검색 및 쓰기

SQL Server 2005 Beta 2에서는 SQL Server 2000에서 처음 도입된 FOR XML 및 OPENXML 기능도 여러 가지로 향상되었습니다.

FOR XML

SQL Server 2000에서 FOR XML 절은 서버에서 XML 결과를 사용할 수 있는 방법을 제공하지 않습니다. XML 결과를 먼저 클라이언트에 반환하지 않고는 테이블에 저장하거나 변수에 할당할 수 없습니다. SQL Server 2005 Beta 2에서는 XML 데이터 형식에 대한 지원이 추가되고 서버에서 XML을 사용할 수 있게 됨으로써 FOR XML이 향상되었습니다. 이는 FOR XML에 TYPE 지시문이 추가되었기 때문입니다. 예를 들어 SELECT...FOR XML TYPE 문의 결과는 로컬 또는 XML 변수에 할당할 수 있거나 후속 INSERT 문에 사용하여 XML 데이터 형식 열을 채울 수 있는 XML 데이터 형식 인스턴스를 생성합니다. PATH 모드는 XML 트리에서 열의 값이 표시되어야 하는 경로를 지정합니다. FOR XML에 포함된 TYPE 옵션과 PATH 옵션은 복잡한 XML 생성 작업을 단순화하며 FOR XML EXPLICIT 쿼리보다 사용하기 편리합니다. FOR XML은 SQL Server 2005 Beta 2의 XML 데이터 형식 열에서도 사용할 수 있습니다.

OPENXML

SQL Server 2000은 기본적으로 FOR XML 절과 OPENXML rowset 함수를 상반되는 하나의 짝으로 처리했습니다. 즉, FOR XML로는 관계형 데이터를 XML로 검색할 수 있고 OPENXML로는 XML을 관계형 데이터로 변환하여 관계형 데이터에 대해 SQL 조인을 설정하거나 쿼리를 실행할 수 있습니다. SQL Server 2005 Beta 2에서는 OPENXML의 기능이 향상되었습니다. XML 데이터 형식 이외에도 UDT(사용자 정의 형식) 등 여러 가지 새 데이터 형식이 지원됩니다. OPENXML WITH 절에서 이 형식을 사용할 수 있으며 XML 데이터 형식 인스턴스를 sp_preparedocument로 전달할 수도 있습니다.

XQuery 지원

XML 쿼리 언어, 즉 XQuery는 모든 형식의 XML 데이터를 쿼리할 수 있게 최적화된 지능적이고 뛰어난 언어입니다. XQuery를 사용하면 XML 데이터 형식과 연결된 메서드를 사용하여 XML 데이터 형식의 변수와 열에 대한 쿼리를 실행할 수 있습니다. 여러 XML 표준과 마찬가지로 W3C(World Wide Web Consortium)에서 XQuery의 개발을 감독합니다. XQuery는 XPath(XML Path Language) 버전 1.0, XQL 및 SQL 같은 여러 가지 다른 쿼리 언어를 기반으로 하는 Quilt라는 쿼리 언어에서 발전한 것입니다. XPath 2.0이 하위 집합으로 포함되어 있기도 합니다. 따라서 XPath 1.0을 사용한 경험이 있으면 그 기술을 사용할 수 있으며 새 쿼리 언어를 전부 다 배우지 않아도 됩니다. XQuery에는 입력, 특수 함수, 그리고 효과적인 반복, 결과 정렬 및 구성 지원 등 XPath 1.0보다 훨씬 향상된 기능이 들어 있습니다.

SQL Server 2005 Beta 2에는 데이터 계층에서 XML 개체 조작을 가능하게 하는 고급 XQuery 기능이 함께 제공됩니다. 이는 2003년 11월 15일의 XQuery 1.0 Working Draft 정적 형식 하위 집합을 지원합니다.

DML 확장

XQuery 사양에는 현재 쿼리를 위한 구문은 포함되어 있지만 XML 문서 수정을 위한 구문은 포함되어 있지 않습니다. XML DML(Data Modification Language)은 데이터 수정을 위한 XQuery 기능의 확장입니다. SQL Server 2005 Beta 2에는 insert, updatedelete의 세 가지 키워드가 추가되었습니다. 이 세 키워드를 각각 XML 데이터 형식의 modify() 메서드 내에서 사용할 수 있습니다.

새로운 응용 프로그램 프레임워크

SQL Server 2005에서는 새로운 SQL Server 응용 프로그램 프레임워크인 Service Broker(서비스 브로커)를 사용합니다. Service Broker(서비스 브로커)는 데이터베이스 대 데이터베이스 수준에서 신뢰할 수 있는 비동기 메시징을 제공하는 분산 응용 프로그램 프레임워크입니다.

SQL Service Broker(서비스 브로커)

지난 10년 동안 전자 상거래 응용 프로그램이 널리 사용되기 시작함에 따라 데이터베이스 응용 프로그램 간의 워크플로 관리를 향상시킬 필요성이 생겼습니다. 온라인 고객이 책을 주문한 경우 이 주문은 재고, 출하 및 신용 카드 시스템에 트랜잭션을 커밋하고 다른 웹 응용 프로그램을 통해 주문 확인도 보내야 합니다. 이러한 각각의 프로세스가 순서대로 진행되는 것을 기다리는 것은 비생산적인 일입니다. SQL Server 2005는 비동기 메시지 라우팅을 구성하기 위해 확장 가능한 새 아키텍처를 제공합니다.

Service Broker(서비스 브로커) 기술을 사용하면 내부 또는 외부 프로세스가 일반 Transact-SQL 데이터 조작 언어의 확장 언어를 사용하여 신뢰할 수 있는 비동기 메시지 스트림을 주고 받을 수 있습니다. 메시지는 보낸 사람과 동일한 데이터베이스에 있는 대기열, 동일한 SQL Server 인스턴스에 있는 다른 데이터베이스 또는 동일한 서버나 원격 서버에 있는 다른 SQL Server 인스턴스로 보내집니다.

Reporting Services

Microsoft SQL Server 2005 릴리스를 통해 Microsoft는 통합 BI(Business Intelligence) 플랫폼의 새로운 주요 구성 요소를 확장합니다. SQL Server Reporting Services는 어느 비즈니스 환경에서나 필요한 사람이 필요한 정보를 쉽게 얻을 수 있도록 함으로써 Microsoft BI 비전을 확장합니다.

Reporting Services는 일반적인 대화형 보고서를 만들고 관리하고 배달하기 위한 완벽한 서버 기반 플랫폼입니다. 보고서를 만들고 배포하고 관리하는 데 필요한 모든 기능이 포함되어 있습니다. 동시에 라우팅 서비스의 모듈식 디자인 및 광범위한 API(응용 프로그램 프로그래밍 인터페이스) 덕분에 소프트웨어 개발자, 데이터 공급자 및 엔터프라이즈는 기존 시스템 또는 타사 응용 프로그램과 보고를 통합할 수 있습니다.

Reporting Services는 SQL Server 2005와 함께 제공되며 다음을 포함합니다.

  • 보고서를 만들고 관리하고 보기 위한 완벽한 도구 집합

  • 보고서를 호스트하고 처리하기 위한 엔진

  • 다양한 IT 환경에서 보고서를 포함하거나 솔루션을 통합하기 위한 확장 가능한 아키텍처 및 공개 인터페이스

Notification Services

Microsoft SQL Server Notification Services는 알림을 생성하여 사용자에게 보내는 응용 프로그램을 개발하고 배포하기 위한 플랫폼입니다. 알림이란 정해진 시간에 여러 장치로 보낼 수 있는 사용자 지정된 메시지를 말합니다.

알림은 구독자의 기본 설정을 반영합니다. 구독자는 구독을 입력하여 특정 정보에 대해 관심이 있다는 것을 표출합니다. 예를 들어 "Adventure Works 주식 시세가 $70.00에 도달하면 알림" 또는 "내 팀에서 작성 중인 전략 문서가 업데이트되는 경우 알림"과 같습니다.

알림은 트리거 이벤트가 발생하는 즉시 생성하여 사용자에게 보낼 수도 있고, 사용자가 지정한 미리 결정된 일정에 따라 생성하여 보낼 수도 있습니다. 사용자의 구독은 알림을 생성하여 보낼 시점을 지정합니다.

알림은 다양한 장치, 즉 사용자의 휴대폰, PDA(개인용 정보 단말기), Microsoft Windows Messenger 또는 전자 메일 계정 등으로 보낼 수 있습니다. 이러한 장치의 경우 사용자가 거의 항상 바로 확인할 수 있으므로 알림은 우선 순위가 높은 정보를 보내는 데 적합합니다.

SQL Server Mobile Edition

SQL Server 2000 Windows CE Edition과 함께 제공되는 SQL Server 2000은 이제 SQL Server Mobile Edition 버전 3.0이 되었습니다. SQL Server Mobile Edition에는 개발자를 위한 여러 가지 새로운 주요 기능이 있습니다.

  • SQL Server Management Studio에서 직접 데스크톱 또는 장치에 SQL Server Mobile Edition 데이터베이스를 만들 수 있습니다. 데이터베이스가 모바일 장치에 있든, 데스크톱에 있든 관계없이 Management Studio에서 바로 SQL Server Mobile Edition 데이터베이스의 스키마를 조작할 수도 있습니다. SQL Server Management Studio를 사용하여 장치 또는 데스크톱에서 SQL Server Mobile Edition 데이터베이스를 대상으로 하는 쿼리를 실행할 수 있습니다. 원시 SQL Server처럼 GUI 형식으로 렌더링되는 XML 실행 계획을 포함하는 새로운 SQL Server Mobile Edition 기능과 SQL Server Mobile Edition의 쿼리 최적화 프로그램을 재정의하는 쿼리 힌트를 사용할 수도 있습니다. 처음으로 개발자가 장치에서 최적화 계획을 제어할 수 있습니다.

  • 이제 DTS(데이터 변환 서비스) 개체에 대해 코드화하여 데이터를 교환할 수 있습니다.

  • SqlCeResult 집합은 SQL Server 2005에 있는SqlCeResult 집합에서 파생된 것으로서 SQL Server Mobile Edition에서 커서를 완벽하게 스크롤 및 업데이트할 수 있도록 합니다. 또한 장치에 있는 데이터 개체에 대한 바인딩을 가능하게 합니다.

  • 주 응용 프로그램을 열어 놓은 상태에서 응용 프로그램을 코드화하여 데이터를 동기화하고, 별도의 두 응용 프로그램이 동시에 장치에 있는 동일한 데이터베이스에 액세스하도록 할 수 있습니다.

  • 동기화 상태를 표시하는 상태 표시줄로 코드화할 수 있는 알림을 받을 수 있습니다. 이전에는 동기화 상태가 얼마나 진행되었는지 알지 못했기 때문에 장치의 응답이 멈춘 것이 아니라는 것을 사용자에게 알릴 수 없었습니다.

  • 좀 더 적극적인 페이지 교정 정책(page reclamation policy)을 통해 데이터베이스의 크기를 작게 유지할 수 있습니다.

  • SQL Server 구문을 사용하여 매개 변수화된 쿼리 코드를 공유할 수 있습니다.

향상된 언어

향상된 Transact-SQL

Transact-SQL은 오랫동안 SQL Server의 모든 프로그래밍에 대한 기초였습니다. SQL Server 2005 Beta 2는 확장 가능한 데이터베이스 응용 프로그램을 개발하기 위한 여러 가지 새 언어 기능을 제공합니다. 향상된 기능에는 오류 처리, 새로운 재귀적 쿼리 기능 및 새 SQL Server Database Engine 기능에 대한 지원이 포함됩니다. SQL Server 2005 Beta 2의 향상된 Transact-SQL은 사용자의 쿼리 작성 능력을 향상시켜 코드의 성능을 높이고 오류 관리 기능을 확장할 수 있도록 합니다. Transact-SQL을 향상시키기 위해 이렇게 지속적으로 노력하는 것은 SQL Server에서 Transact-SQL이 매우 중요하다고 확신하기 때문입니다.

재귀적 쿼리 및 공용 테이블 식

공용 테이블 식(common table expression)은 정의하는 문이 참조할 수 있는 임시 명명된 결과 집합입니다. CTE는 형태가 간단하므로 비영구적인 유형의 뷰와 보다 비슷한 파생된 테이블의 향상된 버전으로 생각할 수도 있습니다. 파생된 테이블 및 뷰를 참조하는 것과 비슷한 방법으로 쿼리의 FROM 절에서 CTE를 참조합니다. CTE는 단 한 번만 정의하며 쿼리에서 여러 번 참조할 수 있습니다. CTE 정의에서는 동일한 배치에 정의된 변수를 참조할 수 있습니다. 뷰를 사용하는 것과 비슷한 방법으로 INSERT, UPDATE, DELETECREATE VIEW 문에서 CTE를 사용할 수도 있습니다. 그러나 CTE에서 가장 유용하게 사용할 수 있는 기능은 CTE 자체에 참조를 포함하고 있는 재귀적 기능입니다. 쿼리 결과를 테이블처럼 참조하려 할 때 데이터베이스에 영구적인 뷰를 만들지 않으려면 파생된 테이블을 사용합니다. 그러나 파생된 테이블에는 CTE에 의해 완화되는 제한이 있습니다. 파생된 테이블을 쿼리에서 한 번 정의한 다음에 여러 번 사용할 수는 없습니다. 대신 같은 쿼리에 여러 개의 파생된 테이블을 정의해야 합니다. 또는 CTE를 한 번 정의한 다음 데이터베이스에서 영구적으로 만들지 않으면서 쿼리에서 여러 번 사용할 수 있습니다.

비재귀적 CTE는 사용자의 표현 능력을 향상시킵니다. 그러나 비재귀적 CTE를 사용하는 각 코드 부분의 경우에는 일반적으로 파생된 테이블과 같은 다른 Transact-SQL 구문을 사용하여 동일한 결과를 얻는 좀 더 긴 코드를 작성할 수 있습니다. 이 경우는 재귀적 CTE와 다릅니다. CTE가 자신을 참조하는 경우 재귀적인 것으로 간주됩니다. 재귀적 CTE는 적어도 다음과 같은 두 개의 쿼리 부분 또는 재귀적 쿼리 언어 멤버로 구성됩니다. 하나는 비재귀적 쿼리 부분으로서 AM(앵커 멤버)이라고도 합니다. 다른 하나는 재귀적 쿼리 부분으로서 RM(재귀적 멤버)이라고도 합니다. 두 쿼리 부분은 UNION ALL 연산자를 통해 하나의 CTE로 조인됩니다.

PIVOT 및 UNPIVOT 연산자

SQL Server 2005 Beta 2는 쿼리의 FROM 절에서 사용되는 두 개의 새 관계형 연산자, PIVOTUNPIVOT을 제공합니다. 이 연산자는 입력 테이블 반환 식에서 값을 조작하여 출력 테이블을 결과로 표시합니다. PIVOT 연산자는 행을 열로 바꾸면서 가능하면 그 과정에서 값을 집계하며, 피벗 열의 각 고유 값에 대한 열이 있는 출력 테이블을 생성하는 주어진 피벗 열을 기준으로 입력 테이블 식을 넓힙니다.

PIVOT 연산자는 공개 스키마 시나리오를 처리하고 크로스 탭 보고서를 생성하는 데 유용합니다. 공개 스키마 시나리오에서는 아직 알려지지 않았거나 각 엔터티 유형마다 다른 특성의 집합으로 엔터티를 유지합니다. 특성은 응용 프로그램 사용자가 동적으로 정의합니다. 여러 열을 미리 정의하고 테이블에 여러 NULL을 저장하는 대신 특성을 서로 다른 행으로 분할하고 각 엔터티 인스턴스에 대한 관련 특성만 저장하면 됩니다.PIVOT을 사용하면 행을 열로 바꾸면서 가능하면 그 과정에서 집계를 계산하고 데이터를 유용한 형태로 표시하는 공개 스키마 및 기타 시나리오에 대한 크로스 탭 보고서를 생성할 수 있습니다.

UNPIVOT 연산자는PIVOT의 반대 연산, 즉 열을 행으로 바꾸며 피벗 열을 기준으로 입력 테이블 식을 좁힙니다. UNPIVOT 연산자를 사용하면 이전에 피벗한 데이터를 표준화할 수 있습니다.

APPLY 연산자

APPLY 연산자를 사용하면 SQL Server 2005 Beta 2에서 상호 관련 하위 쿼리의 테이블 반환 함수를 참조할 수 있습니다. APPLY 관계형 연산자를 통해 사용자는 외부 테이블 식의 각 행에 대해 지정된 테이블 반환 함수를 한 번 호출할 수 있습니다. JOIN 관계형 연산자를 사용하는 것과 비슷한 방법으로 쿼리의 FROM 절에서 APPLY를 지정합니다. APPLYCROSS APPLYOUTER APPLY의 두 가지 형태로 제공됩니다.

CROSS APPLY는 외부 테이블 식에 있는 각 행에 대해 테이블 반환 함수를 호출합니다. 외부 테이블의 열을 테이블 반환 함수에 대한 인수로 참조할 수 있습니다. CROSS APPLY는 테이블 반환 함수의 개별 호출에 의해 반환된 모든 결과로부터 컴파일한 통합된 결과 집합을 반환합니다. 테이블 반환 함수가 주어진 외부 행에 대해 빈 집합을 반환하는 경우 해당 외부 행은 결과에 반환되지 않습니다.

OUTER APPLYOUTER APPLY와 매우 비슷하지만 테이블 반환 함수가 빈 집합을 반환하는 외부 테이블에서도 행을 반환합니다. 테이블 반환 함수의 열에 해당하는 열 값으로 NULL이 반환됩니다.

트랜잭션의 예외 처리

이전 버전의 SQL Server에서는 Microsoft Visual Basic 6.0에서와 유사하게 오류가 있을지도 모르는 모든 문 뒤에 오류 처리 코드를 포함시켜야 했습니다. 오류 검사 코드를 중앙에서 처리하기 위해 레이블과 GOTO 문을 사용해야 했습니다. 더구나 데이터 형식 변환 오류 같은 오류는 배치를 종료시키므로 Transact-SQL로 잡아낼 수 없었습니다. SQL Server 2005 Beta 2에서는 Visual Basic .NET 및 C#에 있는 것과 거의 마찬가지로 TRY/CATCH Transact-SQL 구문의 형태로 된 단순하지만 강력한 예외 처리 메커니즘의 도입을 통해 이러한 문제 중 다수를 해결합니다. 이전에는 문, 수준, 배치 또는 트랜잭션을 종료시키던 오류도 연결에 심각한 피해를 입힐 정도만 아니라면 찾아서 처리할 수 있게 되었습니다.

오류 처리를 구현하려면 실행할 코드를 BEGIN TRY/END TRY 블록 안에 쓴 다음 BEGIN CATCH /END CATCH 블록 안에 오류 처리 코드를 쓰기만 하면 됩니다. TRY 블록은 대응하는 CATCH 블록이 있어야 합니다. 그렇지 않으면 구문 오류가 발생합니다.

DDL 이벤트 알림

SQL Server 2005 Beta 2에서는 DDL 및 시스템 이벤트를 캡처하고 이벤트 알림을 Service Broker(서비스 브로커) 서비스로 보낼 수 있습니다. 동기적으로 처리되는 트리거와 반대로 이벤트 알림은 비동기 소비가 가능한 이벤트 메커니즘입니다. 이벤트 알림은 지정된 Service Broker(서비스 브로커) 서비스로 XML 데이터를 보내고 이벤트 소비자가 이를 비동기적으로 소비합니다. 이벤트 소비자는 Service Broker(서비스 브로커) Receive 문의 WAITFOR 절에 확장 기능을 사용하여 새 데이터가 도착할 때까지 기다릴 수 있습니다.

향상된 전체 텍스트 검색

SQL Server 2005에서는 뛰어난 전체 텍스트 응용 프로그램을 지원합니다. 카탈로그 만들기 기능은 카탈로그로 만들어지는 내용을 보다 융통성 있게 처리할 수 있도록 향상되었습니다. 쿼리 성능과 확장성이 크게 향상되었으며, 새 관리 도구를 사용하면 전체 텍스트 구현을 좀 더 깊이 있게 이해할 수 있습니다.

향상된 보안

SQL Server 2005는 보안, 개인 정보 보호, 신뢰성 및 비즈니스 무결성 분야에서 고객 환경을 향상시키기 위한 Microsoft의 "Trustworthy Computing" 모토로부터 여러 가지 이점을 얻습니다. 2002년 1월부터 전사적으로 도입된 이 모토의 일환으로 Microsoft는 현재 디자인부터 배포에 이르기까지 기본적으로 제품과 제품 배포의 보안을 보장하는 데 도움이 되는 개발 프로세스를 따르고 있습니다. Microsoft SQL Server 개발 팀은 SQL Server 2005의 개발에 이러한 프로세스를 통합했습니다. 배포 후에도 Microsoft는 보안 문제에 대해 지속적으로 고객 및 파트너의 의견을 수용할 예정입니다. 그 결과 SQL Server 2005에는 현재까지의 그 어느 SQL Server 릴리스보다 광범위한 보안 기능이 통합될 것입니다.

일반적으로 다음과 같은 면에서 기능이 향상되었습니다.

  • SQL 서버에   대한   사용자   액세스   제한 : SQL Server에 대한 향상된 액세스 제어 기능과 메커니즘에 대한 투자 덕분에 관리자가 정책을 통해 SQL Server에 대한 액세스를 제어할 수 있게 되었습니다.

  • 서비스   해제     서비스   구성   제한 : SQL Server 내에서 관리자가 자신이 지정한 범위와 세분화 정도에 따라 리소스에 대한 액세스를 제한할 수 있도록 하며, 최소 권한의 원칙을 위반하지 않으면서 보다 관리하기 쉬운 시스템을 구현할 수 있도록 합니다. 새 서버 설치를 위해 일부 서비스가 기본적으로 해제되므로 고객은 이제 사용하고자 하는 특정 추가 서비스를 보다 자유롭게 선택할 수 있게 되었습니다.

  •   기능에   대한   공격   지점   축소 **:**SQL Server의 설치와 설정부터 시작하여 공격 당할 수 있는 지점이 최소화되었습니다. 제품 개발 주기 전반에 걸쳐 공격 지점을 줄이기 위해 새 기능에 대해 보안을 검토하고 테스트했습니다.

결론

Microsoft SQL Server 2005는 개발자가 새로운 클래스의 데이터베이스 응용 프로그램을 빌드하는 데 필요한 도구를 제공합니다. 코드 실행 및 저장소 위치에 대한 장애 요소를 없애고 XML 같은 표준을 통합함으로써 SQL Server 2005는 데이터베이스 개발자에게 새로운 가능성을 열어 줍니다. 이 기사에 포함된 내용은 SQL Server 2005에서 가능한 작업에 대한 소개일 뿐입니다.