DBMS 2

DA, SQL, DB보안 등 실무자를 위한 위한 DB기술 바이블!

.NET Framework 통합

DBMS 2
MS-SQL 가이드
개발자를 위한 SQL Server 2005
.NET Framework 통합
작성자
admin
작성일
2021-02-18 14:30
조회
540

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

Microsoft SQL Server 2005가 출시되면서 데이터베이스 개발의 판도가 변화하고 있습니다. 이제 데이터베이스 개발자들은 해당 기능과 관련된 코드를 적절하게 검색하고 XML과 같은 기본 형식의 데이터에 액세스하며 데이터베이스 서버 성능에 의해 좌우되는 복잡한 시스템을 구축할 수 있는 옵션을 갖게 되었습니다. 데이터베이스 개발은 이전보다 훨씬 통합적인 방식으로 수행되며 필요한 모든 도구를 즉시 사용할 수 있습니다.

본 문서에서는 새로운 수준의 데이터베이스 응용 프로그램을 개발할 수 있도록 지원하는 SQL Server 2005의 대표적인 새 기능을 설명하고 있습니다.


.NET Framework 통합

Microsoft SQL Server 2005가 출시됨에 따라 데이터베이스 프로그래머는 Microsoft .NET Framework 클래스 라이브러리와 최신 프로그래 밍 언어를 최대한 활용해 서버 내에 기능을 구현할 수 있게 됐습니다. CLR(common language runtime) 통합을 이용해 저장 프로시저, 기능 및 트리거를 선택한 .NET Framework 언어로 코딩할 수 있습니다. Microsoft Visual Basic .NET과 C# 프로그래밍 언어는 모두 객체 지향 구문, 구조적 예외 처리(Structured Exception Handling), 어레이, 네임스페이스(namespace), 클래스를 제공합니다. 또한 .NET Framework는 서버 측에서 사용할 수 있는 포괄적인 기본 제공 기능을 포함하여 수천 개의 클래스와 메서드를 제공합니다. Transact-SQL로 수행하기 힘들 거나 어려운 여러 작업들은 관리되는 코드를 사용하여 보다 나은 결과를 거둘 수 있습니다. 또한, 새로운 2가지 형식의 데이터베이스 객체- 집계(aggregate) 및 사용자 정의 형식-를 사용할 수 있습니다. 개발자는 이미 익힌 기술을 보다 효율적으로 활용해 진행 중인 코드를 작성할 수 있습니다. 요약하면 SQL Server 2005를 사용하면 데이터베이스 서버를 확장해 적절한 계산 및 작업을 백 엔드에서 더욱 쉽게 수행할 수 있습니다.

SQL Server와 CLR 간의 통합을 통해 여러 중요한 이점이 제공됩니다.


  • 향상된 프로그래밍 모델 : NET Framework와 호환되는 프로그래밍 언어는 여러 측면에서 Transact-SQL보다 풍부하기 때문에, SQL 개발 자들은 이전까지 지원되지 않았던 구문 및 기능을 활용할 수 있습니다.
  • 안전성 및 보안 강화 : 관리되는 코드는 데이터베이스 엔진이 호스팅하는 CLR 환경에서 실행됩니다. .NET Framework 데이터베이스 객체 는 이전 버전의 SQL Server에서 사용할 수 있었던 확장된 저장 프로시저 보다 안전하며 철저하게 보호됩니다.
  • 사용자 정의 형식 및 총계 : CLR을 호스팅하여 SQL Server의 스토리지 및 쿼리 기능을 확장하는 2개의 새로운 데이터베이스 객체를 지원 할 수 있습니다.
  • 공동 개발 환경 : 데이터베이스 개발은 Microsoft Visual Studio 2005 개발 환경으로 통합됩니다. 개발자는 중간 계층 또는 클라이언트 계층 .NET Framework 구성 요소 및 서비스를 작성할 때 사용하는 것과 동일한 도구로 데이터베이스 객체 및 스크립트를 개발 및 디버깅 할 수 있습니다.
  • 성능 및 확장성 : 관리되는 코드는 복잡한 절차 및 과학적 프로세싱에 최적화되어 있으며 고유 코드에 따라 실행하기 때문에 관리되는 코드를 사용하면 일부 시나리오에서 상당한 성능 향상을 이룰 수 있습니다.

Visual Basic .NET 및 C# 같은 언어를 사용함으로써 논리가 복잡하고 계산 작업에 더욱 적합한 코드를 작성하는 데 CLR 통합을 활용할 수 있습니다. 또한, Visual Basic .NET과 C#는 캡슐화(encapsulation), 상속(inheritance) 및 다형성(polymorphism)과 같은 객체 지향 기능을 제공 합니다. 관련 코드를 클래스와 네임스페이스로 쉽게 구성할 수 있기 때문에 이제 대량의 코드 작업 시 코드 투자를 더욱 쉽게 구성하고 유지 할 수 있습니다. 코드를 논리적/물리적으로 어셈블리 및 네임스페이스로 구성하는 기능은 매우 큰 이점을 제공하며, 대규모 데이터베이스 구현에서 서로 다른 코드 조각을 찾아 연관시키는 기능을 향상시킬 수 있습니다.

관리되는 코드는 숫자 처리 및 복잡한 실행 논리 관리 면에서 Transact-SQL보다 훨씬 효율적이며 문자열 처리, 정규식 등을 광범위하게 지원합니다. 또한, .NET Framework 클래스 라이브러리에서 지원되는 기능을 이용하면 모든 저장 프로시저, 트리거 또는 사용자 정의 함수 에서 쉽게 액세스할 수 있는 수천 개의 사전 구축된 클래스와 루틴을 완벽하게 활용할 수 있습니다. 향상된 문자열 처리 함수, 수학 함수, 날짜 연산(date operation), 시스템 자원 액세스, 첨단 암호화 알고리즘, 파일 액세스, 이미지 처리, XML 데이터 조작 등 모든 기능은 관리되는 저장 프로시저, 함수, 트리거 및 집계(aggregate)에서 쉽게 액세스할 수 있습니다.

관리되는 코드의 주요 이점 중 하나는 안정성 타입(type safety)입니다. 관리되는 코드가 실행되기 전에 CLR은 코드가 실행하기에 안전한지 확인하기 위해 검증(verification)이라는 프로세스를 통해 몇 가지 검사를 시행합니다. 예를 들어 코드를 검사하여 쓰여지지 않은 메모리를 읽지 않도록 보장합니다.


Transact-SQL과 관리되는 코드 중 선택하기

저장 프로시저, 트리거 및 사용자 정의 함수 등을 작성할 때 기존 Transact-SQL을 사용할지, Visual Basic .NET 또는 C#과 같이 .NET Framework와 호환되는 프로그래밍 언어를 사용할지 결정해야 합니다. 이 질문?, 어떤 상황 에서는 Transact-SQL이 유용하고 또 다른 상황에서는 관리되는 코드를 사용하는 것이 효과적일 수 있습니다.

Transact-SQL은 절차상의 로직이 거의 또는 전혀 없으며 코드가 주로 데이터 액세스를 수행하는 경우에 적합합니다. .NET Framework와 호환되는 프로그래밍 언어는 복잡한 로직이 특징인 계산 집약적인 기능 및 절차나, .NET Framework 클래스 라이브러리의 이점을 활용하려 는 경우에 가장 적합합니다.

코드 배치도 중요합니다. Transact-SQL과 관리되는 코드 모두 서버에서 실행되기 때문에 기능과 데이터가 더욱 가까운 곳에 위치하게 되어 서버의 처리 성능을 최대한 활용할 수 있습니다. 또한 데이터와 중간 계층 간의 트래픽이 감소하여 상당한 이점을 얻을 수 있습니다. 데이터 바로 옆에서 계산이 이루어지? 효과적입니다. CLR 기능이 SQL Server 쿼리 프로세서를 활용할 수 있기 때문에 실행을 동기화하고 최적화할 수 있습니다. 한편, 데이터베이스 서버에서 프로세서 집약적인 작업을 처리하고 싶지 않을 수도 있습니다. 오늘날 대다수 컴퓨터들은 매우 강력하기 때문에 클라이언트에 가능한 많은 코드를 배치함으로써 이 처리 성능을 활용 하기를 원할 수도 있습니다. 그러나 모든 요구 사항을 단 한가지 솔루션으로 해결할 수는 없습니다.


웹 서비스

SQL Server 2005을 활용하면 데이터베이스 계층에서 XML 웹 서비스를 개발하여 SQL Server를 HTTP 리스너(listener)로 만들 수 있습니다.

이에 따라 웹 서비스 중심으로 중앙 집중화되는 응용 프로그램에??. SQL Server 2005가 Microsoft Windows Server 2003 또는 Microsoft Windows XP SP2에서 사용될 경우, 현재 운영 체제에 포함되어 있는 경량 웹 서버인 HTTPSYS를 활용함으로써 Microsoft IIS(Internet Information Services)와 같은 중간 계층을 사용하지 않고 HTTP에서 직접 SQL Server로 액세스할 수 있습니다. SQL Server는 웹 서비스 인터페이스를 제시하여 SQL 문을 실행하고 함수 및 프로시저를 호출합니다. 쿼리 결과는 XML 형식으로 반환되며 Visual Studio의 웹 서비스 인프라를 활용할 수 있습니다.


ADO.NET

차기 버전의 ADO.NET에서는 여러 새로운 기능을 선 보이게 됩니다. 새로운 쿼리 변경 알림 지원에서 MARS(Multiple Active Result Set), 그리고 Visual Studio 2005의 고유 형식 지원에 이르기까지, ADO.NET은 데이터 집합 액세스 및 처리 기능을 발전시켜 더욱 우수한 확장성 과 융통성을 발휘합니다.


ADO.NET 알림 지원

SQL Server 2005는 SQL Server 쿼리에 대한 알림 기능을 새롭게 지원합니다. 이 지원을 사용하여 SQL Server에 명령을 전달하고 동일한 명령을 다시 실행할 때 처음 얻은 결과와 다른 결과가 나오는 경우 알림 표시가 생성하도록 요청할 수 있습니다. 원본 데이터가 변경되는 시점을 감지하는 종속성 객체를 사용해 이 기능을 수행할 수 있습니다. ADO.NET, OLE DB, ODBC(Open Database Connectivity), Microsoft ADO(ActiveX Data Objects) 또는 SOAP 같은 모든 클라이언트 API를 통해 서버로 보내진 명령에는 알림이 필요한 태그가 포함되어 있을 수 있습니다. 요청의 일부분으로 실행된 각 문에 대해 서버는 요청에 포함된 각 문마다 한 번만 실행되는“알림 구독”을 만듭니다. 알림 메시지 는 비동기 SQL Service Broker 대기열을 통해 전달됩니다. 쿼리 알림은 데이터베이스 중심 웹 사이트 같은 응용 프로그램에서 결과를 캐싱 하는 데 유용합니다. ASP.NET 2.0이 사용되고 있다면 SQL Server Query Notifications에 대한 지원이 해당 제품에 직접 내장되며 알림 옵션 을 선택하는 것과 같은 간단한 방법으로 실행할 수 있습니다.


MARS(Multiple Active Result Set)

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

MARS(Multiple Active Result Sets)는 전체 결과 집합이 사용될 때까지 드라이버가 서버에 요청을 전송하지 않도록 차단하는 열린 기본 결과 집합 내에서 현재의 제한을 제거합니다.


기본 데이터 형식 지원

ADO.NET 2.0을 통해 많은 새로운 데이터 액세스 옵션을 사용할 수 있을 뿐 아니라 새 SQL Server 데이터 형식 모두에 대한 지원이 관리되 는 코드 언어에 구현됩니다. Visual Studio 개발자들은 이제 Visual Studio 환경에서 직접 SQLXML, 사용자 정의 형식 및 varchar(max)와 같은 새로운 SQL Server 2005 데이터 형식을 모두 활용할 수 있습니다.


스냅샷 격리 지원

SQL Server 2005에서는 새로운 스냅샷 격리 수준을 선보입니다. 스냅샷 격리는 데이터 버전들이 데이터 판독기를 위해 행 버저닝 메커니즘 으로 저장되는 것을 말합니다. 새롭게 추가된 이 격리 수준은 다음과 같은 이점을 제공합니다.


  • 읽기 전용 응용 프로그램에 대한 데이터 가용성 향상 OLTP 환경에서 허용된 읽기 작업 비차단(nonblocking)
  • 쓰기 트랜잭션에 대한 자동 명령 충돌 탐지
  • Oracle에서 SQL Server로의 응용 프로그램 마이그레이션 간소화

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

스냅샷 격리 수준이 지원되며 ADO, OLE DB, SQLOLEDB, Shape Provider, SQLODBC, OLE DB Managed Provider 및 SQL Managed Provider를 통해 제시됩니다.


SMO (SQL Management Object)

SMO(SQL Management Objects) 모델은 SQL Server 2005의 관리 객체 모델로서 SQL Server 관리 객체 모델이 디자인 및 아키텍처 면에서 크게 향상된 것입니다. 이는 사용이 간편하면서도 .NET Framework 관리되는 코드를 기반으로 하는 풍부한 객체 모델로서 .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는 여전히 SQL-DMO와 함께 사용할 수 있지만 SQL-DMO는 SQL Server 2005 고유 기능을 관리하도록 업데이트되지 않습니다.


SMO 및 SQL-DMO

SMO 객체 모델은 SQL-DMO에서 수행된 작업의 논리적인 연속체입니다. SMO SQL-DMO와 기능적으로 호환되며 많은 동일한 객체를 포함하고 있습니다. 가능한 경우라면 원래의 SQL-DMO 설계를 따르지만 SMO에는 SQL-DMO보다 더 많은 추가 기능이 포함되어 있습니다. 최대 DDL(Data Definition Language)과 SQL Server 2005에 대한 관리 범위를 확보하기 위해 SMO는 150개 이상의 새로운 클래스를 추가합 니다.

SMO의 주요 이점은 그 탁월한 성능과 확장성입니다. SMO는 SQL Server에 대한 변경을 적용하기 전에 객체의 여러 속성을 변경할 수 있도 록 하는 캐싱된 객체 모델을 보유하고 있습니다. 따라서 SMO는 서버 간의 왕복을 줄이고 객체를 더욱 유연하게 만듭니다. 또한 최적화된 인스턴스화 기능을 통해 객체를 부분적으로 또는 전체적으로 인스턴스화할 수 있습니다. 따라서 객체들의 모든 속성을 인스턴스화하지 않아 도 되기 때문에 신속하게 많은 객체를 로드할 수 있습니다.

단일 응용 프로그램 루트 디렉터리에서 생성된 모든 서버 객체에 대한 참조를 유지하는 SQL-DMO와 달리, SMO에서는 새로운 연결을 설정? 있습니다. SMO는 SQL-DMO 스타일 스크립팅을 지원할 뿐 아니라 향상된 다단계 스크립팅 을 구현합니다. 또한 실제로 서버에 변경사항을 적용하지 않아도 객체를 캡처 모드로 전환하여 해당 객체에 대해 누락됐을 수 있는 모든 DDL을 포착할 수 있습니다.

SQL-DMO는 또한 SMO 객체 인터페이스를 통해 WMI 모니터링과 서버 구성을 지원할 수 있도록 WMI로의 인터페이스를 간소화하는 관리 되는 컴퓨터 객체를 보유하고 있습니다.


XML 기술

XML은 데이터를 저장 및 전송하는 일반적인 형식이며, 마크 업되거나 구조적 또는 반구조적인 정보에 가장 널리 사용되는 방법입니다. 이러 한 데이터 종류에는 텍스트(문서 구조를 식별하기 위해 마크업되고 반전 표시됨), 중첩된 객체(구조적), 그리고 인스턴스 간에 구조가 변경될 수 있는 이기종 데이터(반구조적)가 있습니다. XML은 또 로컬 네트워크 및 인터넷에서 이기종 응용 프로그램 간에 데이터를 전달할 수 있는 중요하고 널리 받아 들여진 표준이기도 합니다.

Microsoft SQL Server 2000은 Microsoft SQLXML을 통해 XML을 지원하기 때문에 관계형 데이터를 XML 데이터로 전환하여 관계형 테이블 에 XML 데이터를 저장할 수 있습니다. Microsoft SQL Server 2005는 최상급 데이터 형식으로 XML을 지원함으로써, 그리고 XML 문서에 새로운 쿼리 언어를 제공하여 사용자가 적절히 수정할 수 있도록 함으로써 이 기능에 바탕을 두고 구축된 것입니다.

XML 데이터를 사용하는 사용자의 요구를 보다 효과적으로 지원하기 위해 새로운 XML 데이터 형식이 개발되었습니다. 이 데이터 형식은 현재 최종 심의가 진행 중인 중요한 XQuery(XML Query) 사양 세트를 구현하는 query( ), exist( ), value( ), nodes( ) 및 modify( ) 등의 메서드를 가지고 있습니다. 사실상, 이 사양은 XML 데이터 수정 구문이 추가되면서 SQL Server 2005에서 크게 확장되었으며 XML 형식을 지원하기 위해 XML 스키마를 등록하고 관리하기 위해 키워드가 추가되었습니다. 또한 관계형 데이터에서 XML을 생성하고 XML에서도 관계형 데이터를 생성할 수 있도록 지원하기 위해 SQL Server 2000에서 처음 소개되었던 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(Binary Large Objects)로서 저장합니다.

SQL Server 2005에서 XML 데이터를 이용해 작업하는 경우 성능을 높이기 위해 XML 데이터 형식에 대한 색인을 노드 수준까지 적용할 수 도 있습니다. SQL Server 2005는 XML 데이터에서 주 색인과 보조 색인을 지원하며 XML 데이터를 쿼리할 때 적절한 색인을 활용할 수 있도 록 기존 옵티마이저 엔진의 성능을 이용합니다.

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


XML 검색 및 작성

SQL Server 2005에는 SQL Server 2000에서 처음 선보인 FOR XML 및 OPENXML의 향상된 여러 기능이 포함되어 있습니다.


FOR XML

SQL Server 2000의 FOR XML 구문은 서버에서 XML 결과를 사용할 수 있는 방법을 제공하지 않습니다. 테이블에 XML 결과를 저장할 수 없거나(물론 클라이언트로 먼저 반환하지 않고) 변수에 지정할 수 없습니다. SQL Server 2005는 XML 데이터 형식에 대한 지원을 추가하고 서버에서 XML 사용을 허용함으로써 FOR XML을 향상시켰습니다. 이는 FOR XML로 작성된 TYPE 지시어를 추가하는 방식으로 이루어졌습 니다. 예를 들어, SELECT...FOR XML TYPE 문의 결과로 로컬 XML 변수에 지정되거나 XML 데이터 형식 열을 생성하기 위해 후속 INSERT 문에서 사용할 수 있는 XML 데이터 형식 인스턴스가 생성됩니다. PATH 모드는 열 값이 표시되는 XML 트리의 경로를 지정합니다. FOR XML 에 포함된 TYPE 옵션(들)은 복잡한 XML 생성을 간소화하며 FOR XML EXPLICIT 쿼리보다 사용이 더 간편합니다. FOR XML은 SQL Server 2005의 XML 데이터 형식 열에 작용합니다.


OPENXML

SQL Server 2000는 기본적으로 FOR XML 문과 OPENXML rowset 함수를 역관계로 처리합니다. 즉 FOR XML의 경우 관계형 데이터를 XML 로 검색할 수 있는 반면, OPENXML에서는 XML을 관계형 데이터로 반환하며, 이를 SQL 조인 설정 또는 쿼리 실행의 기준으로 삼을 수 있습 니다. SQL Server 2005에서는 OPENXML의 기능이 한층 강화되었습니다. XML 데이터 형식에 대한 지원은 물론, 사용자 정의 형식과 같은 여러 가지 새로운 데이터 형식에 대한 지원이 제공됩니다. 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을 사용한 경험이 있다면 그 기술을 사용할 수 있으며 새 쿼리 언어를 완전히 다시 배울 필요가 없습니다. 그러나 입력, 특수 함수, 그리고 효과적인 반복, 결과 정렬 및 구성 지원 등을 비롯해 XPath 1.0보다 훨씬 향상된 기능들을 제공합니다.

SQL Server 2005에는 데이터 계층에서 XML 객체 조작을 가능?는 2003년 11월 15일 XQuery 1.0 Working Draft의 statically typed 하위 집합을 지원합니다.


DML 확장

XQuery 사양은 현재 쿼리에 필요한 구문과 의미를 포함하고 있지만, XML 문서를 수정하는 데 사용되지는 않습니다. XML DML(Data Modification Language)은 데이터 수정을 위한 XQuery의 향상된 기능입니다. SQL Server 2005는 삽입(insert), 업데이트(update), 삭제(delete) 라는 키워드를 추가했습니다. 이들 각 키워드는 XML 데이터 형식의 modify( ) 메서드 내에서 사용됩니다.