마이크로소프트 SQL 서버

**마이크로소프트 SQL 서버**(Microsoft SQL Server)는 마이크로소프트가 구조화 질의 언어(SQL)를 사용하여 개발한 사유 관계형 데이터베이스 관리 시스템이다. 데이터베이스 서버로서, 다른 소프트웨어 애플리케이션의 요청에 따라 데이터를 저장하고 검색하는 것이 주요 기능인 소프트웨어 제품이다. 이러한 애플리케이션은 동일한 컴퓨터에서 실행될 수도 있고, 네트워크(인터넷 포함)를 통해 다른 컴퓨터에서 실행될 수도 있다. 마이크로소프트는 소규모 단일 기기 애플리케이션부터 많은 동시 사용자가 있는 대규모 인터넷 기반 애플리케이션에 이르기까지 다양한 대상과 작업 부하를 겨냥한 수십 가지 이상의 마이크로소프트 SQL 서버 에디션을 시장에 내놓고 있다.

## 역사

마이크로소프트 SQL 서버의 역사는 1989년 OS/2 운영체제용 16비트 서버인 최초의 마이크로소프트 SQL 서버 제품인 SQL 서버 1.0에서 시작하여 현재까지 이어진다. 그 이름은 SQL 언어로 된 질의에 응답하는 서버 소프트웨어라는 점을 온전히 설명하고 있다.

### 주요 이정표
* OS/2용 MS SQL 서버는 1989년 사이베이스, 애슈턴 테이트, 마이크로소프트가 사이베이스 SQL 서버를 OS/2로 이식하기 위한 프로젝트로 시작되었다.
* 1993년에 NT용 SQL 서버 4.2가 출시되어 윈도우 NT로의 진입을 알렸다.
* 1995년에 SQL 서버 6.0이 출시되어 사이베이스와의 협력이 종료되었다. 사이베이스는 마이크로소프트와 독립적으로 자체 SQL 서버 변종인 사이베이스 Adaptive Server Enterprise를 계속 개발하게 된다.
* 1998년에 SQL 서버 7.0이 출시되어 소스 코드가 C에서 C++로 전환되었다.
* 2000년에 출시된 SQL 서버 2000. SQL 서버 2000 SQL 서버 8 SQL 서버 8.0 코드명 Shiloh, 출시일: 2000-11-30.
* 2005년에 출시된 SQL 서버 2005는 이전 사이베이스 코드를 마이크로소프트 코드로 완전히 개정하는 작업을 완료했다.
* 2008년에 출시된 SQL 서버 2008은 계층적 데이터를 지원하고 FILESTREAM 및 SPATIAL 데이터 유형을 추가했다.
* 2012년에 출시된 SQL 서버 2012는 xVelocity라고 불리는 컬럼형 인메모리 저장소를 추가했다.
* 2017년에 출시된 SQL 서버 2017은 레드햇 엔터프라이즈 리눅스, SUSE 리눅스 엔터프라이즈 서버, 우분투 및 도커 엔진 플랫폼에 대한 리눅스 지원을 추가했다.
* 2019년에 출시된 SQL 서버 2019는 빅 데이터 클러스터, "지능형 데이터베이스" 개선, 향상된 모니터링 기능, 업데이트된 개발자 환경, 리눅스 기반 설치에 대한 업데이트 및 개선 사항을 추가했다.
* 2022년에 출시된 SQL 서버 2022.
* 2025년에 출시된 SQL 서버 2025.

### 현재
 기준으로 마이크로소프트에서 지원하는 버전은 다음과 같다:
* SQL 서버 2016
* SQL 서버 2017
* SQL 서버 2019
* SQL 서버 2022
* SQL 서버 2025

SQL 서버 2016부터 이 제품은 x64 프로세서에서만 지원되며, 최소 1.4&nbsp;GHz 프로세서가 필요하고 2.0&nbsp;GHz 이상의 속도를 권장한다.

현재 버전은 2025년 11월 18일에 출시된 마이크로소프트 SQL 서버 2025이다. RTM 버전은 17.0.1000.7이다.

## 에디션
마이크로소프트는 다양한 기능 세트를 갖추고 서로 다른 사용자를 대상으로 하는 여러 SQL 서버 에디션을 제공한다. 이 에디션들은 다음과 같다:

### 주요 에디션
; 엔터프라이즈(Enterprise): SQL 서버 엔터프라이즈 에디션은 코어 데이터베이스 엔진과 추가 기능 서비스를 모두 포함하며, SQL 서버 클러스터를 생성하고 관리하기 위한 다양한 도구를 제공한다. 최대 524 페타바이트의 데이터베이스를 관리할 수 있고 12 테라바이트의 메모리를 주소 지정할 수 있으며 640개의 논리 프로세서(CPU 코어)를 지원한다.
; 스탠더드(Standard): SQL 서버 스탠더드 에디션은 코어 데이터베이스 엔진과 독립 실행형 서비스를 포함한다. 엔터프라이즈 에디션과 달리 지원하는 활성 인스턴스(클러스터의 노드 수)가 적고, 핫 애드 메모리(서버가 실행 중인 동안 메모리 추가 허용) 및 병렬 인덱스와 같은 일부 고가용성 기능을 포함하지 않는다.
; 웹(Web): SQL 서버 웹 에디션은 웹 호스팅을 위한 낮은 TCO 옵션이다.
; 비즈니스 인텔리전스(Business intelligence): SQL 서버 2012에서 도입되었으며 셀프 서비스 및 기업용 비즈니스 인텔리전스에 중점을 둔다. 스탠더드 에디션의 기능과 Power Pivot, Power View, BI 시맨틱 모델, 마스터 데이터 서비스, 데이터 품질 서비스 및 xVelocity 인메모리 분석과 같은 비즈니스 인텔리전스 도구를 포함한다.
; 워크그룹(Workgroup): SQL 서버 워크그룹 에디션은 핵심 데이터베이스 기능을 포함하지만 추가 서비스는 포함하지 않는다. 이 에디션은 SQL 서버 2012에서 단종되었다.
; 익스프레스(Express): SQL 서버 익스프레스 에디션은 코어 데이터베이스 엔진을 포함하는 축소된 무료 에디션이다. 지원되는 데이터베이스나 사용자 수에 대한 제한은 없지만, 프로세서 1개, 1&nbsp;GB 메모리 및 50&nbsp;GB 데이터베이스 파일 사용으로 제한된다(SQL 서버 익스프레스 2025 이전에는 10&nbsp;GB, SQL 서버 익스프레스 2008 R2 이전에는 4&nbsp;GB). 이는 MSDE를 대체하기 위한 용도이다. 두 개의 추가 에디션이 원래 익스프레스 에디션에 없는 기능을 상위 세트로 제공한다. 첫 번째는 SQL 서버 매니지먼트 스튜디오 베이직을 포함하는 SQL 서버 익스프레스 with Tools이다. SQL 서버 익스프레스 with Advanced Services는 전체 텍스트 검색 기능과 보고 서비스를 추가한다.

### 특수 에디션

; 애저(Azure): 마이크로소프트 애저 SQL 데이터베이스는 마이크로소프트 SQL 서버의 클라우드 기반 버전으로, 마이크로소프트 애저에서 서비스형 플랫폼 오퍼링으로 제공된다.
; 애저 MPP: 애저 SQL 데이터 웨어하우스(Azure SQL Data Warehouse)는 분석 워크로드를 위한 MPP(대규모 병렬 처리) 아키텍처 기반의 클라우드용 마이크로소프트 SQL 서버 버전이며, 마이크로소프트 애저에서 서비스형 플랫폼으로 제공된다.
; 컴팩트 (SQL CE): 컴팩트 에디션은 임베디드 데이터베이스 엔진이다. SQL 서버의 다른 에디션과 달리 SQL CE 엔진은 SQL 모바일(초기에는 휴대용 기기용으로 설계됨)을 기반으로 하며 동일한 바이너리를 공유하지 않는다. 크기가 작기 때문에(1&nbsp;MB DLL 크기) 다른 에디션에 비해 기능 세트가 눈에 띄게 줄어들었다. 예를 들어, 표준 데이터 유형의 일부만 지원하며 저장 프로시저나 뷰 또는 다중 문 일괄 처리를 지원하지 않는다. 최대 4&nbsp;GB 데이터베이스 크기로 제한되며 윈도우 서비스로 실행될 수 없고 사용하는 애플리케이션에 의해 호스팅되어야 한다. 3.5 버전은 ADO.NET 동기화 서비스에 대한 지원을 포함한다. SQL CE는 정식 SQL 서버와 달리 ODBC 연결을 지원하지 않는다.
; 개발자(Developer): SQL 서버 개발자 에디션은 SQL 서버 엔터프라이즈 에디션과 동일한 기능을 포함하지만, 라이선스에 의해 개발 및 테스트 시스템으로만 사용하도록 제한되며 운영 서버로는 사용할 수 없다. 2016년 초부터 마이크로소프트는 이 에디션을 일반에 무료로 제공하기 시작했다.
; 임베디드 (SSEE): SQL 서버 2005 임베디드 에디션은 특정 윈도우 서비스에서만 액세스할 수 있는 SQL 서버 익스프레스 데이터베이스 엔진의 특수하게 구성된 명명된 인스턴스이다.
; 평가판(Evaluation): SQL 서버 평가판 에디션은 엔터프라이즈 에디션의 모든 기능을 갖추고 있지만 180일로 제한된다. 기간이 만료되면 도구는 계속 실행되지만 서버 서비스는 중단된다.
; 패스트 트랙(Fast Track): SQL 서버 패스트 트랙은 특히 기업 규모의 데이터 웨어하우징 저장 및 비즈니스 인텔리전스 처리를 위한 것이며, 패스트 트랙에 최적화된 참조 아키텍처 하드웨어에서 실행된다.
; LocalDB: SQL 서버 익스프레스 2012에서 도입된 LocalDB는 애플리케이션 개발자를 위해 설계된 최소한의 주문형 SQL 서버 버전이다. 임베디드 데이터베이스로도 사용될 수 있다.
; 분석 플랫폼 시스템 (APS): 이전의 병렬 데이터 웨어하우스(PDW). 수백 테라바이트와 같은 대규모 데이터 웨어하우스에 최적화된 대규모 병렬 처리(MPP) SQL 서버 어플라이언스이다.
; 데이터웨어하우스 어플라이언스 에디션: 패스트 트랙 아키텍처를 기반으로 Dell 및 HP와 협력하여 어플라이언스의 일부로 사전 설치 및 구성된 에디션이다. 이 에디션에는 SQL 서버 통합 서비스, 분석 서비스 또는 보고 서비스가 포함되지 않는다.
; 윈도우 내부 데이터베이스 (WID)

### 단종된 에디션
; 마이크로소프트 데이터 엔진(Microsoft Data Engine): 버전 1.0은 SQL 서버 버전 7.0을 기반으로 한다. 이후 Microsoft SQL Server Data Engine으로 대체되었다.
; 마이크로소프트 SQL 서버 데이터 엔진(Microsoft SQL Server Data Engine): 데스크톱 엔진, 데스크톱 에디션으로도 불리며 SQL 서버 2000을 기반으로 한다. 일부 버전의 마이크로소프트 액세스, 마이크로소프트 개발 도구 및 기타 SQL 서버 에디션에 포함되어 있었다. 이러한 관리 및 개발 도구와 함께 사용하도록 의도되었으며 다른 GUI는 포함하지 않았다. 나중에 마이크로소프트는 웹 관리 도구도 제공했다. SQL 서버 2000 이후 SQL 서버 2005 익스프레스 에디션으로 대체되었다.
; 퍼스널 에디션: SQL 서버 2000용. MSDE와 같은 작업 부하 또는 연결 제한이 있었지만 데이터베이스 크기 제한은 없었다. 표준 관리 도구를 포함한다. 모바일 / 연결되지 않은 프록시로 사용하도록 의도되었으며 SQL 서버 2000 스탠더드 에디션과 함께 사용하도록 라이선스가 부여되었다. SQL 서버 2000의 스탠더드 에디션과 유사하지만 윈도우 98에서 전체 텍스트 검색이 작동하지 않았고 트랜잭션 복제는 구독자로 제한되었다.
; 데이터센터: SQL 서버 2008 R2 데이터센터는 높은 수준의 애플리케이션 지원 및 확장성이 필요한 데이터 센터를 위해 설계된 SQL 서버의 모든 기능을 갖춘 에디션이다. 256개의 논리 프로세서와 사실상 무제한의 메모리를 지원하며 StreamInsight 프리미엄 에디션과 함께 제공된다. 데이터센터 에디션은 SQL 서버 2012에서 단종되었으며, 모든 기능은 SQL 서버 2012 엔터프라이즈 에디션에서 사용할 수 있다.
; 윈도우 CE 에디션: SQL 서버 2000에서 도입되었으며, SQL 서버 2005 모바일 에디션으로 대체되었다.
; SQL 서버 2005 모바일 에디션: 1회 출시 후 SQL 서버 2005 컴팩트 에디션으로 대체되었다.
; SQL 서버 2005 컴팩트 에디션: 1회 출시 후 SQL 서버 컴팩트 3.5로 대체되었다.

## 추가 패키지
마이크로소프트에서 발행한 도구는 다음과 같다:
* SQL 서버 2000:
:* 샘플: Northwind 및 pubs 샘플 데이터베이스, SQL 서버 2000용 업데이트된 샘플.
:* 도구: 스트레스 테스트 및 성능 분석 도구 (Read80Trace 및 OSTRESS), PSSDIAG 데이터 수집 유틸리티, 알림 서비스 (서비스 팩 1까지), 보안 도구, Best Practices Analyzer 1.0, 보고 서비스 (서비스 팩 2까지), 보고 서비스 보고서 팩, JDBC용 SQL 서버 2000 드라이버 (서비스 팩 3까지), SQLXML 3.0 (서비스 팩 3까지).
:* 문서: SQL 서버 2000 온라인 설명서, SQL 서버 2000 시스템 테이블 맵, 리소스 킷, SQL 서버 2000 — 시작 가이드.

## 아키텍처
프로토콜 계층은 SQL 서버에 대한 외부 인터페이스를 구현한다. SQL 서버에서 호출할 수 있는 모든 작업은 태뷸러 데이터 스트림(Tabular Data Stream, TDS)이라고 불리는 마이크로소프트가 정의한 형식을 통해 전달된다. TDS는 데이터베이스 서버와 클라이언트 간에 데이터를 전송하는 데 사용되는 애플리케이션 계층 프로토콜이다. 1984년 사이베이스 사가 자신들의 사이베이스 SQL 서버 관계형 데이터베이스 엔진을 위해 처음 설계 및 개발했으며, 나중에 마이크로소프트 SQL 서버에서 마이크로소프트에 의해 개발되었다. TDS 패킷은 TCP/IP, 명명된 파이프, 공유 메모리를 포함한 다른 물리적 전송 종속 프로토콜에 싸여 전송될 수 있다. 결과적으로 이러한 프로토콜을 통해 SQL 서버에 액세스할 수 있다. 또한 SQL 서버 API는 웹 서비스를 통해서도 노출된다.

## 데이터 저장소
데이터 저장소는 타입이 지정된 열이 있는 테이블의 집합인 데이터베이스이다. SQL 서버는 정수(Integer), 부동 소수점(Float), 십진수(Decimal), Char(문자열 포함), Varchar(가변 길이 문자열), binary(구조화되지 않은 데이터의 blob용), Text(텍스트 데이터용) 등을 포함한 다양한 데이터 타입을 지원한다. 부동 소수점을 정수로 반올림할 때는 인수에 따라 대칭 산술 반올림 또는 대칭 내림(fix)을 사용한다. `SELECT Round(2.5, 0)`의 결과는 3이다.

마이크로소프트 SQL 서버는 사용자 정의 복합 유형(UDT)을 정의하고 사용할 수도 있게 한다. 또한 서버 통계를 가상 테이블 및 뷰(동적 관리 뷰 또는 DMV라고 함)로 제공한다. 테이블 외에도 데이터베이스에는 뷰, 저장 프로시저, 인덱스, 제약 조건과 트랜잭션 로그를 포함한 다른 객체들이 포함될 수 있다. SQL 서버 데이터베이스는 최대 231개의 객체를 포함할 수 있으며, 최대 파일 크기가 260바이트(1 엑사바이트)인 여러 OS 수준 파일에 걸쳐 있을 수 있다. 데이터베이스의 데이터는 확장자가 `.mdf`인 기본 데이터 파일에 저장된다. `.ndf` 확장자로 식별되는 보조 데이터 파일은 단일 데이터베이스의 데이터를 둘 이상의 파일에 분산시키고, 선택적으로 둘 이상의 파일 시스템에 분산시키는 데 사용된다. 로그 파일은 `.ldf` 확장자로 식별된다.

데이터베이스에 할당된 저장 공간은 각각 8&nbsp;KB 크기의 순차 번호가 매겨진 페이지로 나뉜다. 페이지는 SQL 서버 작업의 기본 I/O 단위이다. 페이지는 페이지 번호, 페이지 유형, 페이지의 여유 공간 및 해당 페이지를 소유한 객체의 ID를 포함하여 페이지에 대한 메타데이터를 저장하는 96바이트 헤더로 표시된다. 페이지 유형은 페이지에 포함된 데이터를 정의한다. 이 데이터에는 데이터베이스에 저장된 데이터, 인덱스, 페이지가 테이블 및 인덱스에 할당되는 방식에 대한 정보를 보유하는 할당 맵, 마지막 백업 또는 로깅 이후 다른 페이지에 발생한 변경 사항에 대한 정보를 보유하는 변경 맵이 포함되거나 이미지 또는 텍스트와 같은 대형 데이터 유형을 포함한다. 페이지가 I/O 작업의 기본 단위인 반면, 공간은 실제로는 8개의 페이지로 구성된 익스텐트 단위로 관리된다. 데이터베이스 객체는 익스텐트의 8개 페이지를 모두 차지하거나("균일 익스텐트"), 최대 7개의 다른 객체와 익스텐트를 공유할 수 있다("혼합 익스텐트"). 데이터베이스 테이블의 로우(행)는 한 페이지를 넘을 수 없으므로 크기가 8&nbsp;KB로 제한된다. 그러나 데이터가 8&nbsp;KB를 초과하고 로우에 varchar 또는 varbinary 데이터가 포함된 경우, 해당 열의 데이터는 새 페이지(또는 할당 단위라고 불리는 일련의 페이지)로 이동되고 데이터에 대한 포인터로 대체된다.

테이블의 물리적 저장을 위해, 로우는 일련의 파티션(1부터 n까지 번호 매김)으로 나뉜다. 파티션 크기는 사용자 정의이며, 기본적으로 모든 로우는 단일 파티션에 있다. 데이터베이스를 컴퓨터 클러스터에 분산시키기 위해 테이블을 여러 파티션으로 나눈다. 각 파티션의 로우는 B 트리 또는 힙 구조로 저장된다. 테이블에 로우의 빠른 검색을 가능하게 하는 클러스터형 인덱스가 연결되어 있으면 로우는 인덱스 값에 따라 순서대로 저장되며 B 트리가 인덱스를 제공한다. 데이터는 리프 노드에 있고, 다른 노드들은 해당 노드에서 도달 가능한 리프 데이터에 대한 인덱스 값을 저장한다. 인덱스가 비클러스터형인 경우 로우는 인덱스 키에 따라 정렬되지 않는다. 인덱싱된 뷰는 인덱싱된 테이블과 동일한 저장 구조를 갖는다. 클러스터형 인덱스가 없는 테이블은 순서가 없는 힙 구조로 저장된다. 그러나 테이블에는 로우의 빠른 검색을 허용하기 위해 비클러스터형 인덱스가 있을 수 있다. 어떤 상황에서는 힙 구조가 클러스터형 구조보다 성능상 이점이 있다. 힙과 B 트리 모두 여러 할당 단위에 걸쳐 있을 수 있다.

### 버퍼 관리
SQL 서버는 디스크 I/O를 최소화하기 위해 RAM에 페이지를 버퍼링한다. 모든 8&nbsp;KB 페이지는 메모리에 버퍼링될 수 있으며, 현재 버퍼링된 모든 페이지의 집합을 버퍼 캐시라고 한다. SQL 서버에서 사용 가능한 메모리 양에 따라 메모리에 캐시될 페이지 수가 결정된다. 버퍼 캐시는 버퍼 관리자(Buffer Manager)에 의해 관리된다. 페이지를 읽거나 쓸 때 해당 페이지를 버퍼 캐시에 복사한다. 이후의 읽기 또는 쓰기는 디스크 버전 대신 메모리 내 복사본으로 리디렉션된다. 페이지는 메모리 내 캐시가 한동안 참조되지 않은 경우에만 버퍼 관리자에 의해 디스크에서 업데이트된다. 페이지를 디스크에 다시 쓰는 동안 비동기 입출력이 사용되어 백그라운드 스레드에서 I/O 작업이 수행되므로 다른 작업이 I/O 작업이 완료될 때까지 기다릴 필요가 없다. 각 페이지는 기록될 때 체크섬과 함께 기록된다. 페이지를 다시 읽을 때 체크섬을 다시 계산하고 저장된 버전과 대조하여 그 사이에 페이지가 손상되거나 변조되지 않았는지 확인한다.

### 동시성 및 잠금
SQL 서버는 여러 클라이언트가 동일한 데이터베이스를 동시에 사용할 수 있도록 허용한다. 따라서 여러 클라이언트가 동일한 데이터를 업데이트하거나, 다른 클라이언트에 의해 변경 중인 데이터를 읽으려고 할 때 데이터 무결성을 보장하기 위해 공유 데이터에 대한 동시 액세스를 제어해야 한다. SQL 서버는 두 가지 동시성 제어 모드인 비관적 동시성과 낙관적 동시성을 제공한다. 비관적 동시성 제어가 사용될 때 SQL 서버는 잠금(Lock)을 사용하여 동시 액세스를 제어한다. 잠금은 공유 잠금 또는 배타적 잠금일 수 있다. 배타적 잠금은 사용자에게 데이터에 대한 독점적인 액세스 권한을 부여하며, 잠금이 유지되는 동안에는 다른 어떤 사용자도 해당 데이터에 액세스할 수 없다. 공유 잠금은 데이터를 읽을 때 사용되며, 여러 사용자가 공유 잠금으로 잠긴 데이터를 읽을 수 있지만 배타적 잠금을 획득할 수는 없다. 후자는 모든 공유 잠금이 해제될 때까지 기다려야 한다.

잠금은 테이블 전체, 페이지, 또는 테이블의 로우 단위와 같이 다양한 세분성 수준으로 적용될 수 있다. 인덱스의 경우 전체 인덱스 또는 인덱스 리프에 적용될 수 있다. 사용할 세분성 수준은 데이터베이스 관리자가 데이터베이스별로 정의한다. 미세한 잠금 시스템은 더 많은 사용자가 테이블이나 인덱스를 동시에 사용할 수 있게 하지만 더 많은 리소스가 필요하므로 자동으로 성능이 향상되는 것은 아니다. SQL 서버는 또한 잠금보다 덜 견고하지만 리소스 소모가 적은 두 가지 경량 상호 배제 솔루션인 래치(latch)와 스핀락(spinlock)을 포함한다. SQL 서버는 일반적으로 바쁘지 않은 DMV 및 기타 리소스에 이를 사용한다. 또한 SQL 서버는 잠금을 획득하는 모든 작업자 스레드를 모니터링하여 교착 상태에 빠지지 않도록 보장한다. 교착 상태가 발생할 경우 SQL 서버는 구제 조치를 취하는데, 많은 경우 교착 상태에 얽힌 스레드 중 하나를 강제 종료하고 해당 스레드가 시작한 트랜잭션을 롤백한다. 잠금을 구현하기 위해 SQL 서버에는 락 관리자(Lock Manager)가 포함되어 있다. 락 관리자는 데이터베이스 객체와 해당 객체에 대한 잠금(있는 경우) 및 잠금에 대한 기타 메타데이터를 관리하는 메모리 내 테이블을 유지한다. 공유 객체에 대한 모든 액세스는 락 관리자에 의해 중재되며, 락 관리자는 리소스에 대한 액세스를 허용하거나 차단한다.

SQL 서버는 또한 다른 데이터베이스에서 사용되는 다중 버전 동시성 제어와 유사한 낙관적 동시성 제어 메커니즘을 제공한다. 이 메커니즘은 로우가 업데이트될 때마다 로우를 덮어쓰는 대신 로우의 새 버전을 생성할 수 있게 한다. 즉, 로우는 해당 로우의 버전을 생성한 트랜잭션의 ID로 추가 식별된다. 로우의 이전 버전과 새 버전이 모두 저장 및 유지되지만, 이전 버전은 데이터베이스에서 `Tempdb`로 식별되는 시스템 데이터베이스로 이동된다. 로우가 업데이트되는 동안 다른 요청은(잠금과 달리) 차단되지 않고 로우의 이전 버전에서 실행된다. 다른 요청이 업데이트 문인 경우 로우의 두 가지 버전이 생기며, 데이터베이스는 각각의 트랜잭션 ID로 식별하여 두 버전을 모두 저장한다.

## 데이터 검색 및 프로그래밍 기능
SQL 서버 데이터베이스에서 데이터를 검색하는 주요 모드는 데이터를 질의하는 것이다. 질의는 마이크로소프트 SQL 서버가 과거의 유산으로 인해 사이베이스 SQL 서버와 공유하는 방언인 T-SQL이라는 변형 SQL을 사용하여 표현된다. 질의는 무엇을 검색할지 선언적으로 지정한다. 이는 질의 프로세서에 의해 처리되며, 질의 프로세서는 요청된 데이터를 검색하는 데 필요한 일련의 단계를 파악한다. 질의를 실행하는 데 필요한 일련의 작업을 질의 계획이라고 한다. 동일한 질의를 처리하는 방법은 여러 가지가 있을 수 있다. 예를 들어, 조인 문과 셀렉트 문을 포함하는 질의의 경우, 두 테이블에 대해 조인을 실행한 다음 결과에 대해 셀렉트를 실행하는 것은 각 테이블에서 셀렉트한 후 조인을 실행하는 것과 동일한 결과를 제공하지만 실행 계획은 달라진다. 이러한 경우 SQL 서버는 가능한 한 짧은 시간에 결과를 제공할 것으로 예상되는 계획을 선택한다. 이를 질의 최적화라고 하며 질의 프로세서 자체에서 수행한다.

SQL 서버에는 질의를 실행하는 데 드는 리소스 측면의 비용을 최적화하려고 시도하는 비용 기반 질의 최적화 도구가 포함되어 있다. 질의가 주어지면 질의 최적화 도구는 데이터베이스 스키마, 데이터베이스 통계 및 당시의 시스템 부하를 확인한다. 그런 다음 질의에서 참조된 테이블에 액세스할 순서, 작업을 실행할 순서 및 테이블 액세스에 사용할 액세스 방법을 결정한다. 예를 들어, 테이블에 관련 인덱스가 있는 경우 인덱스를 사용할지 여부를 결정한다. 대부분의 로우에 대해 고유하지 않은 열(낮은 "선택도")에 인덱스가 있는 경우 데이터 액세스에 인덱스를 사용하는 것이 가치가 없을 수 있다. 마지막으로 질의를 동시에 실행할지 여부를 결정한다. 동시 실행은 전체 프로세서 시간 측면에서 비용이 더 많이 들지만, 실행이 실제로 다른 프로세서로 분산되기 때문에 더 빨리 실행될 수 있음을 의미한다. 질의에 대한 질의 계획이 생성되면 일시적으로 캐시된다. 동일한 질의가 다시 호출되면 캐시된 계획이 사용된다. 사용되지 않는 계획은 일정 시간 후에 폐기된다.

SQL 서버는 또한 저장 프로시저를 정의할 수 있게 한다. 저장 프로시저는 서버 자체에 저장되는 매개변수화된 T-SQL 질의이다(일반 질의처럼 클라이언트 애플리케이션에서 발행되지 않음). 저장 프로시저는 클라이언트가 보낸 값을 입력 매개변수로 받아들일 수 있고 결과를 출력 매개변수로 보낼 수 있다. 정의된 함수와 동일한 저장 프로시저를 포함한 다른 저장 프로시저를(정해진 횟수까지) 호출할 수 있다. 이들은 선택적으로 액세스 권한을 제공받을 수 있다. 다른 질의와 달리 저장 프로시저에는 이름이 지정되어 있으며, 런타임에 실제 질의로 해석되는 데 사용된다. 또한 (이름으로 액세스할 수 있으므로) 매번 클라이언트에서 코드를 보낼 필요가 없기 때문에 네트워크 트래픽을 줄이고 성능을 다소 향상시킨다. 저장 프로시저의 실행 계획도 필요에 따라 캐시된다.

### T-SQL

T-SQL(Transact-SQL)은 마이크로소프트의 SQL 서버용 독점 절차적 언어 확장이다. 표준 SQL의 명령 세트를 확장하여 데이터 조작(DML) 및 데이터 정의(DDL) 명령에 대한 REPL(Read-Eval-Print-Loop) 지침을 제공하며, SQL 서버 전용 설정, 보안 및 데이터베이스 통계 관리 기능이 포함되어 있다.

이는 데이터베이스 스키마 생성 및 변경, 데이터베이스 데이터 입력 및 편집, 서버 자체 모니터링 및 관리 등을 포함하여 SQL 서버에서 수행할 수 있는 작업에 대한 키워드를 노출한다. 데이터를 소비하거나 서버를 관리하는 클라이언트 애플리케이션은 T-SQL 질의와 문을 전송하여 SQL 서버 기능을 활용하며, 서버는 이를 처리하고 결과(또는 오류)를 클라이언트 애플리케이션에 반환한다. 이를 위해 서버 통계를 읽을 수 있는 읽기 전용 테이블을 노출한다. 관리 기능은 관리 작업을 수행하기 위해 T-SQL 질의에서 호출할 수 있는 시스템 정의 저장 프로시저를 통해 노출된다. 또한 T-SQL을 사용하여 연결된 서버(linked server)를 생성할 수 있다. 연결된 서버를 사용하면 단일 질의로 여러 서버에서 수행되는 작업을 처리할 수 있다.

### SQL 서버 네이티브 클라이언트 (일명 SNAC)
SQL 서버 네이티브 클라이언트는 버전 2005 이후의 마이크로소프트 SQL 서버용 기본 클라이언트 측 데이터 액세스 라이브러리이다. 이는 태뷸러 데이터 스트림(Tabular Data Stream) 구현, 미러링된 SQL 서버 데이터베이스 지원, SQL 서버가 지원하는 모든 데이터 유형에 대한 완전한 지원, 비동기 작업, 질의 알림, 암호화 지원 및 단일 데이터베이스 세션에서 여러 결과 집합 수신을 포함한 SQL 서버 기능을 기본적으로 구현한다. SQL 서버 네이티브 클라이언트는 내부적으로 ADO 또는 OLE DB를 포함한 다른 데이터 액세스 기술용 SQL 서버 플러그인에서 사용된다. 일반 데이터 액세스 계층을 거치지 않고 직접 SQL 서버 네이티브 클라이언트를 사용할 수도 있다.

2011년 11월 28일에는 리눅스용 SQL 서버 ODBC 드라이버의 프리뷰 버전이 출시되었다.

### SQL CLR

마이크로소프트 SQL 서버 2005에는 닷넷 프레임워크와 통합되는 SQL CLR(공통 언어 런타임)이라는 구성 요소가 포함되어 있다. 닷넷 프레임워크를 사용하는 대부분의 다른 애플리케이션과 달리, SQL 서버 자체가 닷넷 프레임워크 런타임을 호스팅한다. 즉, 닷넷 프레임워크의 메모리, 스레딩 및 리소스 관리 요구 사항은 기본 윈도우 운영체제가 아니라 SQLOS 자체에 의해 충족된다. SQLOS는 닷넷 코드에 대한 교착 상태 감지 및 해결 서비스도 제공한다. SQL CLR을 사용하면 C# 및 VB.NET을 포함한 모든 관리형 닷넷 언어로 저장 프로시저와 트리거를 작성할 수 있다. 관리 코드는 데이터베이스에 영구적으로 저장될 수 있는 UDT(사용자 정의 타입)를 정의하는 데에도 사용될 수 있다. 관리 코드는 CLI 어셈블리로 컴파일되며 타입 안전성 검증을 거친 후 데이터베이스에 등록된다. 그 후에는 다른 프로시저처럼 호출될 수 있다. 그러나 SQL CLR에서 코드를 실행할 때는 기본 클래스 라이브러리의 일부만 사용할 수 있다. 사용자 인터페이스 기능과 관련된 대부분의 API는 사용할 수 없다.

SQL CLR용 코드를 작성할 때, SQL 서버 데이터베이스에 저장된 데이터는 SQL 서버 데이터에 액세스하는 다른 관리형 애플리케이션과 마찬가지로 ADO.NET API를 사용하여 액세스할 수 있다. 그러나 그렇게 하면 코드가 실행 중인 세션과 다른 새 데이터베이스 세션이 생성된다. 이를 방지하기 위해 SQL 서버는 이미 실행 중인 코드를 호스팅하는 동일한 세션으로 연결을 리디렉션할 수 있도록 ADO.NET 프로바이더에 몇 가지 향상된 기능을 제공한다. 이러한 연결을 컨텍스트 연결(context connection)이라고 하며 연결 문자열의 `context connection` 매개변수를 `true`로 설정하여 설정한다. SQL 서버는 또한 테이블 형식 데이터나 단일 행 데이터를 다루는 클래스와 데이터베이스에 저장된 데이터에 대한 내부 메타데이터를 다루는 클래스를 포함하여 ADO.NET API에 대한 몇 가지 다른 향상된 기능을 제공한다. 또한 XQuery 지원을 포함하여 SQL 서버의 XML 기능에 대한 액세스를 제공한다. 이러한 개선 사항은 새로운 XML 데이터 타입(query, value, nodes 함수)의 도입 결과로 T-SQL 프로시저에서도 사용할 수 있다.

## 서비스
SQL 서버는 다양한 추가 서비스들도 포함한다. 이것들이 데이터베이스 시스템의 작동에 필수적인 것은 아니지만, 핵심 데이터베이스 관리 시스템 위에 부가 가치 서비스를 제공한다. 이러한 서비스들은 SQL 서버 구성 요소의 일부로 실행되거나 윈도우 서비스로서 프로세스 외부에서 실행되며, 이들을 제어하고 상호 작용하기 위한 고유한 API를 제공한다.

### 머신 러닝 서비스

SQL 서버 머신 러닝 서비스는 SQL 서버 인스턴스 내에서 작동하여 사람들이 네트워크를 통해 데이터를 보내거나 자신의 컴퓨터 메모리에 제한받지 않고 머신 러닝과 데이터 분석을 수행할 수 있도록 한다. 이 서비스는 데이터 과학에 흔히 사용되는 패키지가 포함된 마이크로소프트의 R 및 파이썬 배포판과 함께 제공되며, 대규모 머신 모델을 생성하는 데 사용할 수 있는 일부 독점 패키지(예: revoscalepy, RevoScaleR, microsoftml)가 포함되어 있다.

분석가는 클라이언트 기기를 구성하여 원격 SQL 서버에 연결하고 스크립트 실행을 해당 서버로 푸시하거나, T-SQL 질의 내의 외부 스크립트로 R 또는 파이썬 스크립트를 실행할 수 있다. 학습된 머신 러닝 모델은 데이터베이스 내에 저장되어 점수 산정(scoring)에 사용될 수 있다.

### 서비스 브로커
인스턴스 내부, 프로그래밍 환경에서 사용된다. 인스턴스 간 애플리케이션의 경우 서비스 브로커는 TCP/IP를 통해 통신하며 메시지 교환을 통해 서로 다른 구성 요소가 동기화되도록 한다. 데이터베이스 엔진의 일부로 실행되는 서비스 브로커는 SQL 서버 애플리케이션을 위한 안정적인 메시징 및 메시지 큐 플랫폼을 제공한다.

서비스 브로커 서비스는 다음과 같은 부분으로 구성된다:
* 메시지 유형 (message types)
* 계약 (contracts)
* 큐 (queues)
* 서비스 프로그램 (service programs)
* 라우트 (routes)

메시지 유형은 메시지에 사용되는 데이터 형식을 정의한다. 이는 XML 객체, 일반 텍스트 또는 이진 데이터일 수 있으며 알림을 위한 null 메시지 본문일 수도 있다. 계약은 서비스 간의 대화에서 어떤 메시지가 사용되는지와 누가 큐에 메시지를 넣을 수 있는지를 정의한다. 큐는 메시지의 저장소 역할을 한다. 내부적으로 SQL 서버에 의해 테이블로 구현되지만 삽입, 업데이트 또는 삭제 기능은 지원하지 않는다. 서비스 프로그램은 서비스 브로커 메시지를 수신하고 처리한다. 일반적으로 서비스 프로그램은 저장 프로시저 또는 CLR 애플리케이션으로 구현된다. 라우트는 네트워크에서 서비스 브로커가 위치한 네트워크 주소이다.

또한 서비스 브로커는 네트워크 인증(NTLM, 커버로스, 또는 권한 부여 인증서 사용), 무결성 검사 및 메시지 암호화와 같은 보안 기능을 지원한다.

### 복제 서비스
SQL 서버 복제 서비스는 SQL 서버에서 데이터베이스 객체의 전체 또는 일부를 네트워크의 다른 데이터베이스 서버나 클라이언트 측의 데이터베이스 캐시일 수 있는 복제 에이전트 간에 복제하고 동기화하는 데 사용된다. 복제 서비스는 게시자/구독자 모델을 따르며, 즉 변경 사항은 하나의 데이터베이스 서버("게시자")에서 전송되고 다른 서버("구독자")에서 수신된다. SQL 서버는 세 가지 다른 유형의 복제를 지원한다:

; 트랜잭션 복제: 게시자 데이터베이스(마스터 데이터베이스)에 수행된 각 트랜잭션은 구독자로 동기화되어 구독자가 자신의 데이터베이스를 해당 트랜잭션으로 업데이트한다. 트랜잭션 복제는 데이터베이스를 거의 실시간으로 동기화한다.
; 병합 복제: 게시자와 구독자 데이터베이스 양쪽에서 발생한 변경 사항이 추적되며, 주기적으로 게시자와 구독자 간에 변경 사항이 양방향으로 동기화된다. 동일한 데이터가 게시자와 구독자 데이터베이스 양쪽에서 다르게 수정된 경우, 동기화 시 충돌이 발생하며 이는 수동으로 또는 사전 정의된 정책에 따라 해결되어야 한다. 병합 복제가 구성된 경우 컬럼에 Rowguid를 구성해야 한다.
; 스냅샷 복제: 스냅샷 복제는 전체 데이터베이스의 복사본(당시의 데이터 스냅샷)을 게시하고 구독자에게 복제한다. 스냅샷 이후의 추가 변경 사항은 추적되지 않는다.

### 분석 서비스

SQL 서버 분석 서비스(SSAS)는 SQL 서버 데이터베이스에 OLAP 및 데이터 마이닝 기능을 추가한다. OLAP 엔진은 데이터에 대해 MOLAP, ROLAP 및 HOLAP 저장 모드를 지원한다. 분석 서비스는 기본 통신 프로토콜로 Analysis용 XML 표준을 지원한다. 큐브 데이터는 MDX 및 LINQ 질의를 사용하여 액세스할 수 있다.
데이터 마이닝 전용 기능은 DMX 질의 언어를 통해 노출된다. 분석 서비스는 데이터 마이닝에 사용할 수 있도록 결정 트리, 클러스터링 알고리즘, 나이브 베이즈 알고리즘, 시계열 분석, 시퀀스 클러스터링 알고리즘, 선형 및 로지스틱 회귀 분석 및 신경망과 같은 다양한 알고리즘을 포함한다.

### 보고 서비스

SQL 서버 보고 서비스(SSRS)는 SQL 서버 데이터베이스에서 수집된 데이터에 대한 보고서 생성 환경이다. 웹 인터페이스를 통해 관리된다. 보고 서비스는 맞춤형 보고 애플리케이션 개발을 지원하기 위해 웹 서비스 인터페이스를 제공한다. 보고서는 RDL 파일로 생성된다.

보고서는 비즈니스 인텔리전스 개발 스튜디오가 설치된 최신 버전의 비주얼 스튜디오(Visual Studio.NET 2003, 2005, 2008)를 사용하거나 포함된 Report Builder를 사용하여 디자인할 수 있다. 일단 생성되면 RDL 파일은 엑셀, PDF, CSV, XML, BMP, EMF, GIF, JPEG, PNG, TIFF 및 HTML 웹 아카이브를 포함한 다양한 형식으로 렌더링될 수 있다.

### 알림 서비스

원래 SQL 서버 2000의 사후 출시 추가 기능으로 도입된 알림 서비스는 SQL 서버 2005와 함께 처음이자 마지막으로 마이크로소프트 SQL 서버 플랫폼의 일부로 번들 제공되었다. SQL 서버 알림 서비스는 알림 서비스 구독자에게 전송되는 데이터 기반 알림을 생성하기 위한 메커니즘이다. 구독자는 특정 이벤트나 트랜잭션(데이터베이스 서버에 트리거로 등록됨)을 등록하며, 이벤트가 발생하면 알림 서비스는 세 가지 방법 중 하나를 사용하여 이벤트 발생을 알리는 메시지를 구독자에게 보낼 수 있다. 이러한 방법에는 SMTP, SOAP 또는 파일 시스템의 파일에 기록하는 방법이 포함된다. 알림 서비스는 2008년 8월 SQL 서버 2008의 출시와 함께 마이크로소프트에 의해 중단되었으며, 더 이상 SQL 서버 데이터베이스 플랫폼의 공식 지원 구성 요소가 아니다.

### 통합 서비스

SQL 서버 통합 서비스(SSIS)는 데이터 가져오기, 데이터 통합 및 데이터 웨어하우스 요구 사항에 대한 ETL 기능을 SQL 서버에 제공한다. 통합 서비스에는 다양한 소스에서 데이터 추출, 데이터 질의, 데이터 변환(집계, 중복 제거, 정규화/비정규화 및 데이터 병합 포함), 변환된 데이터를 대상 데이터베이스나 파일로 내보내기와 같은 워크플로를 구축하기 위한 GUI 도구가 포함되어 있다.

### 전체 텍스트 검색 서비스
섬네일|SQL 서버 전체 텍스트 검색 서비스 아키텍처

SQL 서버 전체 텍스트 검색(FTS) 서비스는 SQL 서버 데이터베이스에 저장된 구조화되지 않은 텍스트를 위한 특수 인덱싱 및 질의 서비스이다. 전체 텍스트 검색 인덱스는 문자 기반 텍스트 데이터가 있는 모든 열에 생성할 수 있다. 이를 통해 텍스트 열에서 단어를 검색할 수 있다. SQL `LIKE` 연산자로도 수행할 수 있지만, SQL 서버 전체 텍스트 검색 서비스를 사용하는 것이 더 효율적일 수 있다. 전체 텍스트 검색은 소스 문자열의 부정확한 일치를 허용하며, 0에서 1000 사이의 랭크(Rank) 값으로 표시된다. 랭크가 높을수록 더 정확한 일치를 의미한다. 또한 언어적 일치("굴절형 검색"), 즉 단어의 언어적 변형(다른 시제의 동사 등)도 주어진 단어와 일치하는 것으로 간주한다(단, 정확한 일치보다는 낮은 랭크를 가짐). 근접 검색도 지원된다. 즉, 검색된 단어가 질의에 지정된 순서대로 나타나지 않더라도 서로 가까이 있으면 일치하는 것으로 간주한다. T-SQL은 FTS 기능에 액세스하는 데 사용할 수 있는 특수 연산자를 노출한다.

전체 텍스트 검색 엔진은 필터 데몬 프로세스(`msftefd.exe`)와 검색 프로세스(`msftesql.exe`)의 두 가지 프로세스로 나뉜다. 이 프로세스들은 SQL 서버와 상호 작용한다. 검색 프로세스에는 인덱서(전체 텍스트 인덱스를 생성함)와 전체 텍스트 질의 프로세서가 포함된다. 인덱서는 데이터베이스의 텍스트 열을 검색한다. 또한 이진 열을 검색하고 iFilter를 사용하여 이진 blob에서 의미 있는 텍스트를 추출할 수 있다(예: 마이크로소프트 워드 문서가 데이터베이스에 비구조화된 이진 파일로 저장된 경우). iFilter는 필터 데몬 프로세스에 의해 호스팅된다. 텍스트가 추출되면 필터 데몬 프로세스는 이를 일련의 단어로 나누어 인덱서에게 전달한다. 인덱서는 불용어(noise words), 즉 A, And 등 빈번하게 발생하지만 검색에 유용하지 않은 단어들을 걸러낸다. 남은 단어들로 각 단어를 발견된 열과 연관시키는 역색인이 생성된다. SQL 서버 자체에는 테이블의 변경 사항을 모니터링하고 업데이트가 발생할 경우 인덱서를 호출하는 가더러(Gatherer) 구성 요소가 포함되어 있다.

SQL 서버 질의 프로세서에 전체 텍스트 질의가 수신되면 검색 프로세스의 FTS 질의 프로세서로 전달된다. FTS 질의 프로세서는 질의를 구성 단어로 나누고 불용어를 필터링하며 내장된 유의어 사전을 사용하여 각 단어에 대한 언어적 변형을 찾는다. 그런 다음 단어들은 역색인에 대해 질의되고 정확도에 대한 랭크가 계산된다. 결과는 SQL 서버 프로세스를 통해 클라이언트에 반환된다.

### SQLCMD
SQLCMD는 마이크로소프트 SQL 서버와 함께 제공되는 명령줄 애플리케이션으로 SQL 서버의 관리 기능을 노출한다. 명령 프롬프트에서 SQL 질의를 작성하고 실행할 수 있게 한다. 또한 일련의 SQL 문을 스크립트로 생성하고 실행하는 스크립트 언어 역할을 할 수도 있다. 이러한 스크립트는 `.sql` 파일로 저장되며 데이터베이스 관리나 데이터베이스 배포 중 데이터베이스 스키마를 생성하는 데 사용된다.

SQLCMD는 SQL 서버 2005에서 도입되었으며 SQL 서버 버전 2008, 2008 R2, 2012, 2014, 2016 및 2019를 거쳐 계속 유지되고 있다. 이전 버전에서의 전신은 OSQL 및 ISQL이었으며, T-SQL 실행과 관련하여 기능적으로 동등하고 많은 명령줄 매개변수가 동일하지만 SQLCMD는 추가적인 범용성을 더했다.

### 비주얼 스튜디오

비주얼 스튜디오는 마이크로소프트 SQL 서버를 사용한 데이터 프로그래밍에 대한 기본 지원을 포함한다. SQL CLR에 의해 실행될 코드를 작성하고 디버깅하는 데 사용될 수 있다. 또한 데이터베이스 스키마를 그래픽으로 생성, 확인 또는 편집하는 데 사용할 수 있는 데이터 디자이너를 포함한다. 질의는 시각적으로나 코드를 사용하여 생성할 수 있다. SSMS 2008부터는 SQL 질의에 대한 인텔리센스도 제공한다.

### SQL 서버 매니지먼트 스튜디오

SQL 서버 매니지먼트 스튜디오는 마이크로소프트 SQL 서버 내의 모든 구성 요소를 구성, 관리 및 투약하기 위해 SQL 서버 2005 이후에 포함된 GUI 도구이다. 이 도구는 서버의 객체 및 기능과 함께 작동하는 스크립트 편집기와 그래픽 도구를 모두 포함한다. SQL 서버 매니지먼트 스튜디오는 SQL 서버 2005부터 마이크로소프트 SQL 서버의 기본 관리 인터페이스로서 Enterprise Manager를 대체한다. SQL 서버 익스프레스 에디션용 버전도 제공되며, 이는 SQL 서버 매니지먼트 스튜디오 익스프레스(SSMSE)로 알려져 있다.

SQL 서버 매니지먼트 스튜디오의 핵심 기능은 개체 탐색기(Object Explorer)로, 사용자가 서버 내의 모든 객체를 탐색, 선택 및 작업을 수행할 수 있도록 한다. 이는 질의 계획을 시각적으로 관찰 및 분석하고 데이터베이스 성능을 최적화하는 등의 용도로 사용될 수 있다. 또한 새 데이터베이스 생성, 테이블 및 인덱스 추가 또는 수정을 통한 기존 데이터베이스 스키마 변경, 또는 성능 분석에도 사용될 수 있다. 질의를 작성하고 실행할 수 있는 GUI 기반 인터페이스를 제공하는 질의 창을 포함한다.

### 애저 데이터 스튜디오

애저 데이터 스튜디오(Azure Data Studio)는 선택적으로 다운로드 가능한 크로스 플랫폼 질의 편집기이다. 이 도구를 사용하여 사용자는 질의 작성, 질의 결과 내보내기, SQL 스크립트를 깃 리포지토리에 커밋, 기본적인 서버 진단 수행 등을 할 수 있다. 애저 데이터 스튜디오는 윈도우, 맥 및 리눅스 시스템에서 실행되며 2026년 2월 28일에 은퇴할 예정이다.

이는 2018년 9월에 정식 출시되었다. 출시 전 프리뷰 버전은 SQL 서버 오퍼레이션 스튜디오(SQL Server Operations Studio)로 알려져 있었다.

### 비즈니스 인텔리전스 개발 스튜디오

비즈니스 인텔리전스 개발 스튜디오(BIDS)는 마이크로소프트 분석 서비스, 보고 서비스 및 통합 서비스를 활용하여 데이터 분석 및 비즈니스 인텔리전스 솔루션을 개발하는 데 사용되는 마이크로소프트의 IDE이다. 이는 비주얼 스튜디오 개발 환경을 기반으로 하지만 보고서(보고 서비스 사용), 큐브 및 데이터 마이닝 구조(분석 서비스 사용)를 위한 도구, 컨트롤 및 프로젝트를 포함하여 SQL 서버 서비스 전용 확장 프로그램과 프로젝트 유형으로 맞춤화되어 있다. SQL 서버 2012 이후 이 IDE는 SQL Server Data Tools(SSDT)로 이름이 변경되었다.

## 같이 보기
* 관계형 데이터베이스 관리 시스템의 비교
* 객체 관계 데이터베이스 관리 시스템의 비교
* 데이터 모델링 도구의 비교
* 관계형 데이터베이스 관리 시스템 목록
* XLeratorDB

## 각주

## 참고 자료

* Lance Delano, Rajesh George et al. (2005). Wrox's SQL Server 2005 Express Edition Starter Kit (Programmer to Programmer). Microsoft Press. .
* Delaney, Kalen, et al. (2007). Inside SQL Server 2005: Query Tuning and Optimization. Microsoft Press. .
* Ben-Gan, Itzik, et al. (2006). Inside Microsoft SQL Server 2005: T-SQL Programming. Microsoft Press. .
* Klaus Elk (2018). SQL Server with C#. .

## 외부 링크

* 
* 

분류:데이터베이스 관리 시스템
분류:마이크로소프트 데이터베이스 소프트웨어
분류:관계형 데이터베이스 관리 시스템