Microsoft SQL Server

**Microsoft SQL Server**（マイクロソフト・エスキューエル・サーバー）とは、マイクロソフトが開発する、関係データベース管理システム（RDBMS）である。
略称は**SQL Server**、または**MS SQL**等。
主要な問い合わせ言語（クエリ言語）は、T-SQLとANSI SQLである。

企業サーバ向けの高機能なシステムから、組み込み系の小規模なシステムまで幅広く対応する。
また、Microsoft Windowsと親和性が高く、ADOやADO.NETを経由し、最適なバックエンドデータベースを構築できるようになっている。

## 特徴
* Transact-SQLというSQL Server向けに拡張されたSQLを使用している。
* OLAP・多次元解析などのビジネスインテリジェンス (BI) やデータマイニングのための機能を備えている。
* データベースの自動圧縮機能を備えている。ただし圧縮処理の最中はパフォーマンスが著しく低下し、また圧縮中にハード障害が起きるとデータベースファイルが破壊される可能性が高いため、デフォルトでは自動圧縮はOFFとなっている。
* データベースのミラーリング・フェイルオーバー機能が備わっており、フォールトトレランスを実現できる。
* ストアドプロシージャに.NET Frameworkも利用できる。Transact SQLでは記述が困難な高度な処理を簡易に記述でき、処理によっては高速化も図れる他、CLRによって保護されているためバグがあってもSQL Serverごとクラッシュする事はない。なお、Transact SQLで容易に可能な集合操作等は、むやみにCLRを使用すると低速となる。
* SQL Server 2016でR言語をデータベース内で使用可能にするサービスとして、R Servicesが追加され、SQL Server 2017では、R言語だけでなくPythonを使用することが可能なMachine Learning Servicesが追加された。これにより、R / Pythonの様々なパッケージをSQL Server内で使用することができ、データベース内に機械学習の学習済みモデルを内包させることが可能となっている。
* GUIツール類が充実しており、DBMSに不慣れなユーザーでも扱いやすい。
* SQL Server 2017からは、Linux (Red Hat Enterprise Linux / SUSE Linux Enterprise Server / Ubuntu) 、Docker Engine (Windows / Linux / Mac) 上で動作させることができるようになり、クロスプラットフォーム対応したRDBMSとなった。

## エディション
SQL Serverは、その規模に応じた複数の種類から構成されており、規模に合わせて機能や性能が異なっている。

SQL Server 2016 Service Pack 1 からは、エディション毎の機能差が緩和されており、Express Edition / Standard Edition でも、以前は Enterprise Edition でのみ提供されていた機能の一部が使用できるようになっている。

SQL Server 2016 以降は、x64 のみの提供となり、x86 / IA-64 版の提供は行われていない。

;Enterprise Edition:大企業や高度な要求を処理するシステム向けのエディション。SQL Server の全機能を備える。 (x86, x64, IA-64)
;Developer Edition:企業でのデータベースシステム開発用途に利用するエディション。そのため実稼働環境では使用できない。Enterprise Edition と同等の機能が備わっている。 従来はパッケージで発売していたが、2016年3月より SQL Server 2014 から無償提供の発表と提供開始がされた。(x86, x64, IA-64)
;Standard Edition:中規模企業から大規模な部門のシステム向けのエディション。Enterpriseからデータ分析機能などが削減されている。Standard Editionから64ビットOSに対応している。 (x86, x64, IA-64)
;Workgroup Edition:小規模なシステム向けのエディション。Express Editionと違い、データベースのサイズなどの制限が取り除かれている。SQL Server 2008 R2を最後に廃止され、2012では後継となるエディションは提供されていない。 (x86)
;Web Edition:Webサービス向けに合わせたライセンスモデルの製品。SQL Server 2008 R2を最後に廃止され、2012では後継となるエディションは提供されていない。 (x86, x64)
;Compact Edition:他のエディションとは全く異なりクライアントサーバモデルではなく、ハードウェア上に組み込むタイプの製品。タブレットPCやスマートデバイスなどのモバイル向けで、位置づけ的にはMobile EditionとMicrosoft Jet Database Engineの後継にあたる。 (ARM, MIPS, SH4, x86)
;Express Edition:無償で利用できるエディション。主に個人や小規模商用アプリケーションに使用されている。SQL Serverのエディションの中でも基本的な機能のみ備える。SQL Server Express を参照のこと。 (x86, x64)
;Express Edition with Advanced Services:Express Editionの機能に加えて、フルテキストクエリの実行・ローカルDBのReporting Servicesの実行機能、および管理ツールが同梱されている。無償のエディション。
;Embedded Edition:Windows Server上で動作する追加コンポーネント用のソフトウェア組み込み用データベース。「Internal Database」とも呼ばれる。WSUSやWindows SharePoint Servicesのバックエンドデータベースとして自動インストールされる。外部ネットワークからDBに接続することは出来ず、内部アプリケーションからはパイプでのみ接続できる。なお、SharePoint Servicesで使用する場合は、データベースサイズの制限が解除される。ただし他のアプリケーションからは使用できない。

### 無償版エディション

無償版は、個人用途や多くの小規模商用アプリケーションで利用されているため、以下に詳細を記述する。

#### MSDE
**Microsoft SQL Server Desktop Engine**（**マイクロソフト エスキューエル サーバ デスクトップ エンジン**、初期バージョンではMicrosoft Data Engine）は、利用できるメモリサイズやデータベースサイズなどに制限があるものの無償で利用でき、学習用あるいは小規模なWebアプリケーションやデスクトップアプリケーションなどで利用できるものである。グラフィカルな管理ツールが提供されていないため、主にコマンドベースのユーティリティ (osql.exe)を利用して管理する。なお、Windows Vistaからは動作保証外となった。
MSDEの後継製品はSQL Server Express Editionである。

##### MSDEのバージョン
詳しいバージョンの調べ方は、マイクロソフトサポートオンラインを参照。

* 1999年 - MSDE 1.0。Office 2000 などに含まれる。SQL Server 7.0 ベース。
* 2000年 - MSDE 2000。Office XP などに含まれる。SQL Server 2000 をベース。
* 2003年 - MSDE 2000 Release A(SP3a)。 Office 2003 などに含まれる。
* 2005年 - MSDE 2000 SP4。

#### SQL Server Express Edition

SQL Server Express Edition は MSDE の後継製品で、引き続き無償で公開されている製品。
MSDE で利用できなかった管理ツール (SQL Server Management Studio Express) も公開され、管理が容易になった。また、データベースの最大サイズが拡張された。ただし、物理CPUの認識が1つに制約されたりメモリの使用量が 1GB まで縮小されるなどの制約もある。また MSDE 2000 に存在したジョブスケジュールなどの機能が省かれた。

高度な機能は利用できないが (SQL Server 2016 SP1 以降は、従来まで Enterprise Edition でのみサポートされていた機能の一部が使用可能になっている)、その代わり Workgroup Edition 以上のエディションと同等のプロトコルや Transact-SQL が利用でき、無償の開発プラットフォームを提供する事によりユーザーの囲い込みを図る、マイクロソフトの戦略的パッケージと言える。同じコンセプトの戦略をとるものに IBM DB2-C がある。

#### SQL Server Developer Edition
SQL Server Developer Edition は、開発 / テストシステム/ デモの用途でのみ利用可能なエディションである（運用の用途では使用することはできない）。

以前は有償製品として提供が行われていたが、SQL Server 2016 のリリースのタイミングで、無償利用可能な製品となり、SQL Server 2016 以降は、評価版のインストール時に Developer Edition を選択することができるようになっている。

無償のエディションであるが、Express Edition とは異なり、Enterprise Edition 相当の機能 / ハードウェアリソースを使用することができ、SQL Server のすべての機能を使用することが可能なエディションである（Enterprise Evaluation と異なり、評価版ではないため、試用期限が設定されていないことも特徴である）。

## バージョン
各々のバージョンで最新のエンジンに改良されたり新しいSQL構文がサポートされていったり、アルゴリズムなどが変化したりしている。ある範囲での後方互換性も保たれており、「互換性レベル」を指定してその時点と同じ挙動をさせることが可能である。一方で新しいバージョンにおいて、互換性レベルのサポートが外れてしまったアプリケーションは利用できなくなるので注意が必要である。

## ライセンス
ここではSQL Server 2005および2008に関するライセンスを記述する。

最新のライセンスの情報については 次の情報 を参照。

;プロセッサライセンス (2017/11 現在は「物理プロセッサ数」ではなく「コアベースのライセンスモデル」となっている):搭載している物理プロセッサの数によるライセンス。複数コアでもプロセッサが1個なら1ライセンスと数える。CALが不要となるため不特定多数のクライアントが利用する用途に向いている。近年の物理プロセッサ数に対するコア数の増加を理由に、SQL SERVER 2008 R2 にて25%程度の値上げが行われた。
:SQL Server 2012からは、物理プロセッサ数によるライセンスが廃止されコア数による課金へ移行されている。
:コアライセンスは、各プロセッサに最低 4 つのライセンスが必要となり、それ以上のコアの場合には、2 コア単位でライセンスの購入が必要となる。
:6コア以上のプロセッサを使用する場合には実質値上げとなる。具体的な例として8コアのプロセッサを前提とした場合、SQL SERVER 2008と比較してSQL SERVER 2012では、2.5倍の値上ということになる。
:仮想マシンにインストールした SQL Server に関してもコアライセンスを利用することができ、その場合も SQL Server を動作させる各仮想マシンに対して、物理環境で動作させた場合と同等のライセンスの付与が必要となる。
:Enterprise Edition のコアベースのライセンスの場合、物理サーバー全体にライセンスを適用し、そのライセンスにソフトウェアアシュアランス (SA) を追加することで、その環境内で動作する任意の数の仮想マシンに対して、SQL Server を稼働させることが可能となる。

;サーバー/CALライセンス:アクセスするユーザー数またはデバイス数に応じたライセンス。アクセス数が小規模な用途に向いている。

以下にライセンスの主なポイントを記述する。なお、ライセンスの詳細条件はエディションによって変わることがあるため、マイクロソフトの公式サーバーサイトやライセンス取り扱い業者なども参考にされたい。

***サーバー/CALライセンス**に必要なCALは、実際にSQL Serverにアクセスするデバイス（例：パソコン）やユーザー（例：従業員）の数に応じて用意する。そのため、CAL数は、SQL Serverへの同時接続数（セッション数）やSQL Serverで作ったアカウント数といった技術的な数とは異なる。例えば技術的にはIISからSQL Serverへの接続が1セッション1アカウントだとしても、IISの認証を通してSQL Serverの機能を利用するデバイスまたはユーザーが複数いれば、その分だけCALが必要となる。
***サーバー/CALライセンス**の場合、CAL1つで複数のSQL Serverにアクセスできる。例えば、CALを持つユーザーAは、そのCALだけでSQL Server1にもSQL Server2にもアクセスすることが出来る。
*SQL Serverの**[[フェイルオーバー]]機能**のうち、アクティブ・スタンバイ構成（稼動・待機系構成、冗長化）を利用する場合、稼動系（アクティブ）のライセンスがあれば、待機系（スタンバイ）のライセンスは不要である（負荷分散も兼ねるアクティブ・アクティブ構成では、両系列分のライセンスが必要である）。この場合、待機系のSQL Serverは、待機中に何らかのサービスをクライアントに提供することはできない。さらに**プロセッサライセンス**の場合、待機系のプロセッサ数は稼動系のプロセッサ数を超えてはならない。待機系が稼動系に切り替わったときは、30日間は追加ライセンス不要で、待機系を稼動系として動作させることが出来る。これらの条件は**[[ミラーリング]]**でも同様である。

## サービス
SQL Serverには、さまざまなアドオンサービスが含まれている。これらはデータベースシステムの運用に必須でないが、中核機能であるデータベース管理システムの付加価値サービスを提供する。これらは、SQL Serverの一部として実行されるものもあれば、別プロセスのWindowsサービスとして実行され、独自のAPIを提供して制御、操作することができるものもある。

### Machine Learning Services
SQL Server Machine LearningサービスはSQL Serverインスタンス内で動作するため、ネットワークを介してデータを送信したり、自分のコンピューターのメモリに制限されたりすることなく、機械学習とデータ分析を行うことができる。このサービスには、データサイエンスで一般的に使用されるパッケージを含む、マイクロソフトのR/Pythonディストリビューションと、大規模なマシンモデルの作成に使用できる独自のパッケージ（revoscalepy、RevoScaleR、microsoftmlなど）が付属している。

### Service Broker
SQL Server Service Brokerはインスタンス、プログラミング環境内で使用される。クロスインスタンスアプリケーションの場合、Service BrokerはTCP/IPを介して通信し、メッセージの交換を介してさまざまなコンポーネントを同期する。Service Brokerはデータベースエンジンの一部として実行され、SQL Serverアプリケーションに信頼性の高いメッセージングおよびメッセージキュープラットフォームを提供する。

### Replication Services
SQL Server Replication Servicesは、SQL Serverによって使用され、ネットワーク上の他のデータベースサーバーやクライアント側のデータベースキャッシュなどのレプリケーションエージェント間で、データベースオブジェクト全体または存在するオブジェクトのサブセットをレプリケート、同期する。

### Analysis Services
SQL Server Analysis Servicesは、SQL ServerデータベースにOLAPとデータマイニング機能を追加する。OLAPエンジンは、データのMOLAP、ROLAP、およびHOLAPストレージモードをサポートする。Analysis Servicesは、基盤となる通信プロトコルとしてXML for Analysis標準をサポートする。キューブデータには、MDXおよびLINQクエリを使用してアクセスできる。データマイニング固有の機能には、DMXクエリ言語でアクセスする。Analysis Servicesには、決定木、クラスタリングアルゴリズム、単純ベイズ分類器、時系列分析、シーケンスクラスタリングアルゴリズム、線形回帰/ロジスティック回帰分析、ニューラルネットワークなど、データマイニングで使用する様々なアルゴリズムが含まれる。

### Reporting Services
SQL Server Reporting Servicesは、SQL Serverデータベースから収集されたデータのレポートを生成する機能である。Reporting Servicesは、Webインターフェイスで管理され、カスタムレポートアプリケーションの開発をサポートするWebサービスインターフェイスを備えている。レポートはRDLファイル形式で作成される。

レポートは、Microsoft Visual Studioの最新バージョン（Visual Studio.NET 2003、2005、および2008）と、インストール済みのBusiness Intelligence Development Studio、または付属のレポートビルダーを使用して設計できる。作成されたRDLファイルは、Excel、PDF、CSV、XML、BMP、EMF、GIF、JPEG、PNG、TIFF、HTML Webアーカイブなどのさまざまな形式でレンダリングできる。

### Notification Services
当初はSQL Server 2000のリリース後のアドオンとして導入され、Notification ServicesはMicrosoft SQL Serverプラットフォームの一部としてSQL Server 2005に初めてバンドルされた。SQL Server Notification Servicesは、サブスクライバーに送信されるデータ駆動型通知を生成するためのメカニズムである。サブスクライバーは、特定のイベントまたはトランザクション（データベースサーバーにトリガーとして登録されている）に登録する。イベントが発生すると、Notification Servicesは3つの方法のいずれかを使用して、イベントの発生を通知するメッセージをサブスクライバーに送信する。これらのメソッドには、SMTP、SOAP、またはファイルシステム内のファイルへの書き込みが含まれる。 Notification Servicesは、2008年8月のSQL Server 2008で廃止され、SQL Serverデータベースプラットフォームで正式にサポートされるコンポーネントではなくなった。

### Integration Services
SQL Server Integration Services（SSIS）は、データインポート、データ統合、およびデータウェアハウスのニーズに対応するSQL ServerのETL機能を提供する。Integration Servicesには、さまざまなソースからのデータの抽出、データのクエリ、データの変換（集計、重複排除、データの非正規化/正規化、マージなど）、変換されたデータの宛先データベースまたはファイルへのエクスポートなどのワークフローを構築するためのGUIツールが含まれる。

### フルテキスト検索
SQL Server全文検索サービスは、SQL Serverデータベースに格納されている非構造化テキストの特殊なインデックス作成およびクエリサービスである。全文検索インデックスは、文字ベースのテキストデータを使用して任意の列に作成できる。これにより、テキスト列で単語を検索できる。SQL `LIKE`演算子を使用して実行できるが、SQL Server全文検索サービスを使用するとより効率的になる。

### 管理ツール

SQL Serverには現在2種類の管理ツールが存在する。

;SQL Server Management Studio:SQL Server 2005から同梱されている管理ツール。 以前は、Express用に機能を省略した「Basic」(Express) が無償ダウンロードとなっていたが、最新の SQL Server Management Studio は、フル機能が利用できるものが無償ダウンロード可能である。
;Azure Data Studio:GitHubで公開されている、Visual Studio Codeをベースとした、OSS のクロスプラットフォーム (Windows / Linux / Mac) に対応した管理ツール。元々はSQL Operations Studioとして開発されていたもの。言語パックをインストールすることで日本語に対応する。

他社製の管理ツール：
;Navicat for SQL Server:SQL Server 2000、2005、2008、2008R2、2012、2014、2016に対応し、SQL Azureにも互換性がある。

以前のバージョンで使用されていた管理ツール：
;SQL Server Enterprise Manager
:SQL Server 2000以前から同梱されている管理ツール。商用のエディションにのみ同梱され、無償のMSDE用には配布されていない。

## 歴史

元は、UNIX などの上で稼動していた Sybase の製品で、Ingres のプロジェクトからスピンオフした開発者達が開発したといわれる。
この製品の名称は、Sybase SQL Server だった。
その後 OS/2 向けのデータベース管理システム (DBMS) を手に入れることを望んだ Microsoft が、Sybase と提携して、移植版を開発・発売することになった。Microsoft は後にプラットフォームを Windows NT に移した。したがって、SQL Server の名称は Microsoft SQL Server と Sybase SQL Server を指す。

その後、両社は提携を解消して、それぞれ独自にバージョンアップを行うようになり、機能に大きな差が生じているので、これらは厳密に区別する必要がある。ただ、しばらくして、混同を避けるために、Sybase SQL Server は Adaptive Server Enterprise (ASE) に名前を変えたため、今では、単に SQL Server といったときは、Microsoft SQL Server を指す。

両製品には、インタフェースレベルである程度の互換性が残っており、同じドライバをいずれへの接続にも使えることがある。

SQL Server 6.5 までは Sybase から技術提供を受け開発を続けてきたが、次期 SQL Server ではアーキテクチャを一新したいと考えたビル・ゲイツ自身が、当時、関係データベースに関する世界的に著名な論文を発表していたジム・グレイや Dave Campbell らに直接会って口説き落とし、4名ほどを Microsoft に迎え入れ、コードのほとんどを書き直し、世に送り出したのが SQL Server 7 である。バージョン番号はわずか 0.5 しか上がっていないが、その中身はまったくの別物となっていた。

2016年3月7日、SQL Server on Linux のリリース計画が発表された。2017年10月2日にリリースされたSQL Server 2017において、LinuxやDockerに対応した。SQL Server on Linux は、SQL PAL (SQL Platform Abstraction Layer) という抽象層を設けることで、Linux 上で、Windows の SQL Server のバイナリを実行するという構成をとっており、Linux 版の SQL Server でも Windows 版の SQL Server と同等の品質が担保されている。

## 競合製品
Microsoft SQL Serverはエンタープライズ向けのRDBMS市場、とりわけ中小企業向けで高いシェアを有しているが、競合ベンダーから多数の製品が提供されている上、オープンソースDBも普及しており、競争が激化している。主要な競合製品には以下のRDBMSがある。

* Oracle Database (米Oracle)
* DB2 （米IBM）
* SAP HANA （独SAP）
* Amazon Aurora （米Amazon.com）
* PostgreSQL （オープンソース）
* MySQL （オープンソース）

## 注釈

## 出典

## 関連項目
* Transact-SQL
* Adaptive Server Enterprise (Sybase SQL Server)

## 外部リンク
* SQL Data Developer
* SQL Server Technical Documentation
* SQL Database | サービス詳細 | Microsoft Azure
* SQL Azure at a glance