| マイクロソフトSQLサーバー | |
|---|---|
| 開発者 | マイクロソフト |
| 初回リリース | 1989年4月24日、SQL Server 1.0として (1989年4月24日) |
| 安定版リリース | |
| 書かれた | C、C++ [ 3 ] |
| オペレーティング·システム | Linux、Microsoft Windows Server、Microsoft Windows |
| 入手可能な | 英語、中国語、フランス語、ドイツ語、イタリア語、日本語、韓国語、ポルトガル語(ブラジル)、ロシア語、スペイン語、インドネシア語[ 4 ] |
| タイプ | リレーショナルデータベース管理システム |
| ライセンス | 独自のソフトウェア |
| Webサイト | www.microsoft.com/sql-server |
Microsoft SQL Server は、 Microsoftが構造化照会言語(SQL、しばしば「シークエル」と発音)を使用して 開発した独自のリレーショナルデータベース管理システムです。データベースサーバーとして、他のソフトウェアアプリケーションからの要求に応じてデータを保存および取得することを主な機能とするソフトウェア製品です。これらのアプリケーションは、同じコンピュータ上またはネットワーク (インターネットを含む) 上の別のコンピュータ上で実行されます。Microsoft は、少なくとも 12 種類の異なるエディションの Microsoft SQL Server を販売しており、それぞれ異なるユーザー層とワークロードを対象としています。対象は、小規模な単一マシンアプリケーションから、多数の同時ユーザーを抱える大規模なインターネット対応アプリケーションまで多岐にわたります。
Microsoft SQL Serverの歴史は、最初のMicrosoft SQL Server製品である1989年のOS/2オペレーティングシステム用16ビットサーバーであるSQL Server 1.0から始まり、現在まで続いています。SQL Serverという名称は、SQL言語のクエリに応答するサーバーソフトウェアであることを明確に示しています。
2025年11月現在、以下のバージョンがMicrosoftによってサポートされています。[ 7 ]
SQL Server 2016以降、この製品はx64プロセッサのみでサポートされ、最低でも1.4GHzのプロセッサが必要で、2.0GHz以上が推奨されます。[ 8 ]
現在のバージョンは、2025年11月18日にリリースされたMicrosoft SQL Server 2025です。RTMバージョンは17.0.1000.7です。[ 9 ]
MicrosoftはSQL Serverを複数のエディションで提供しており、それぞれ異なる機能セットとユーザー層を対象としています。これらのエディションは以下のとおりです。[ 10 ] [ 11 ]
Microsoft が公開しているツールには次のようなものがあります。
プロトコル層は、SQL Serverへの外部インターフェースを実装します。SQL Serverで実行できるすべての操作は、Microsoftが定義したTabular Data Stream(TDS)形式を介してSQL Serverに伝達されます。TDSはアプリケーション層プロトコルであり、データベースサーバーとクライアント間のデータ転送に使用されます。TDSは、1984年にSybase Inc.がSybase SQL Serverリレーショナルデータベースエンジン用に設計・開発し、後にMicrosoftによってMicrosoft SQL Serverに搭載されました。TDSパケットは、TCP/IP、名前付きパイプ、共有メモリなどの他の物理トランスポート依存プロトコルに組み込むことができます。その結果、これらのプロトコルを介してSQL Serverにアクセスできます。さらに、SQL Server APIはWebサービス経由でも公開されています。[ 11 ]
データストレージはデータベースであり、型指定された列を持つテーブルの集合です。SQL Serverは、Integer、Float、Decimal、Char(文字列を含む)、Varchar(可変長文字列)、binary(非構造化BLOBデータ)、Text(テキストデータ)などのプリミティブ型を含む、様々なデータ型をサポートしています。浮動小数点数を整数に丸める際には、引数に応じて対称算術丸めまたは対称切り捨て(fix )のいずれかが使用されます。結果は3です。 SELECT Round(2.5, 0)
Microsoft SQL Server では、ユーザー定義の複合型 (UDT) を定義して使用することもできます。また、サーバーの統計情報を仮想テーブルおよびビュー (動的管理ビューまたは DMV と呼ばれる) として利用することもできます。テーブルに加えて、データベースには、ビュー、ストアド プロシージャ、インデックス、制約、トランザクションログなどのオブジェクトも含めることができます。SQL Server データベースには最大 2 31個のオブジェクトを含めることができ、最大ファイル サイズが 2 60バイト (1 エクサバイト)の複数の OS レベル ファイルにまたがることができます。 [ 11 ]データベース内のデータは、拡張子が .db のプライマリ データ ファイルに格納されます.mdf。.ndf拡張子が .db で識別されるセカンダリ データ ファイルは、単一のデータベースのデータを複数のファイル、さらにオプションで複数のファイル システムに分散できるようにするために使用されます。ログ ファイルは.ldf拡張子で識別されます。[ 11 ]
データベースに割り当てられたストレージ領域は、連続番号が付けられた各8KBのページに分割されます。ページは、SQL Server操作におけるI/Oの基本単位です。ページには96バイトのヘッダーが付き、ページ番号、ページタイプ、ページの空き領域、ページを所有するオブジェクトのIDなど、ページに関するメタデータが格納されます。ページタイプは、ページに含まれるデータを定義します。このデータには、データベースに格納されたデータ、インデックス、テーブルやインデックスへのページの割り当て方法に関する情報を保持するアロケーションマップ、前回のバックアップまたはログ記録以降に他のページに加えられた変更に関する情報を保持する変更マップ、あるいは画像やテキストなどの大きなデータ型を含む変更マップが含まれます。ページはI/O操作の基本単位ですが、実際には8ページで構成されるエクステント単位で領域が管理されます。データベースオブジェクトは、1つのエクステント内で8ページすべてにまたがる(「ユニフォームエクステント」)か、最大7つのオブジェクトとエクステントを共有する(「混合エクステント」)ことができます。データベーステーブルの行は複数のページにまたがることができないため、サイズは8KBに制限されます。ただし、データが8KBを超え、行にvarcharまたはvarbinaryデータが含まれている場合、それらの列のデータは新しいページ(またはアロケーションユニットと呼ばれるページシーケンス)に移動され、データへのポインタに置き換えられます。[ 30 ]
テーブルの物理的な格納では、行は一連のパーティション (1 から n の番号が付けられている) に分割されます。パーティション サイズはユーザーが定義します。既定では、すべての行が 1 つのパーティションにあります。テーブルは、データベースをコンピュータ クラスターに分散するために、複数のパーティションに分割されます。各パーティションの行は、 B ツリーまたはヒープ構造に格納されます。行を高速に取得できるようにテーブルにクラスター化インデックスが関連付けられている場合、行はインデックス値に従って順序どおりに格納され、B ツリーがインデックスを提供します。データはリーフのリーフ ノードにあり、その他のノードには、それぞれのノードからアクセスできるリーフ データのインデックス値が格納されます。インデックスが非クラスター化の場合、行はインデックス キーに従ってソートされません。インデックス付きビューの格納構造は、インデックス付きテーブルと同じです。クラスター化インデックスのないテーブルは、順序付けられていないヒープ構造に格納されます。ただし、テーブルには、行を高速に取得できるように非クラスター化インデックスがある場合があります。状況によっては、ヒープ構造の方がクラスタ構造よりもパフォーマンス上の利点があります。ヒープとBツリーはどちらも複数のアロケーションユニットにまたがることができます。[ 31 ]
SQL Server は、ディスク I/O を最小限に抑えるためにページを RAM にバッファリングします。任意の 8 KB ページをメモリ内にバッファリングでき、現在バッファリングされているすべてのページのセットは、バッファ キャッシュと呼ばれます。SQL Server で使用可能なメモリの量によって、メモリにキャッシュされるページ数が決まります。バッファ キャッシュは、バッファ マネージャによって管理されます。任意のページからの読み取りまたはページへの書き込みにより、そのページがバッファ キャッシュにコピーされます。後続の読み取りまたは書き込みは、ディスク上のバージョンではなく、メモリ内のコピーにリダイレクトされます。メモリ内キャッシュが一定時間参照されていない場合にのみ、バッファ マネージャによってディスク上のページが更新されます。ページをディスクに書き戻す間、非同期 I/Oが使用されます。非同期 I/O では、I/O 操作がバックグラウンド スレッドで実行されるため、他の操作は I/O 操作が完了するまで待機する必要がありません。各ページは、書き込まれるときにチェックサムと共に書き込まれます。ページを読み戻す際には、チェックサムが再度計算され、保存されているバージョンと照合され、その間にページが破損または改ざんされていないことが確認されます。[ 32 ]
SQL Server では、複数のクライアントが同時に同じデータベースを使用できます。そのため、複数のクライアントが同一データを更新したり、別のクライアントによって変更中のデータを読み取ろうとしたりする場合、データの整合性を確保するために、共有データへの同時アクセスを制御する必要があります。SQL Server には、ペシミスティック同時実行とオプティミスティック同時実行という 2 つの同時実行制御モードがあります。ペシミスティック同時実行制御を使用する場合、SQL Server はロックを使用して同時アクセスを制御します。ロックは共有ロックまたは排他ロックのいずれかです。排他ロックは、ユーザーにデータへの排他アクセスを許可します。ロックが保持されている間、他のユーザーはデータにアクセスできません。共有ロックは、一部のデータを読み取るときに使用されます。複数のユーザーは、共有ロックでロックされたデータから読み取ることができますが、排他ロックを取得することはできません。排他ロックを取得しようとすると、すべての共有ロックが解除されるまで待機する必要があります。
ロックは、テーブル全体、ページ、またはテーブルの行ごとなど、さまざまな粒度レベルで適用できます。インデックスの場合は、インデックス全体またはインデックス リーフに適用できます。使用する粒度レベルは、データベース管理者がデータベースごとに定義します。きめ細かいロック システムでは、より多くのユーザーがテーブルまたはインデックスを同時に使用できますが、必要なリソースも増えるため、必ずしもパフォーマンスが向上するわけではありません。SQL Server には、ラッチとスピンロックという 2 つの軽量な相互排他ソリューションも用意されています。これらはロックほど堅牢ではありませんが、リソースをあまり消費しません。SQL Server は、通常ビジー状態ではない DMV やその他のリソースにこれらを使用します。また、SQL Server は、ロックを取得したすべてのワーカー スレッドを監視して、デッドロックに陥らないようにします。デッドロックが発生した場合、SQL Server は修復措置を取ります。多くの場合、デッドロックに巻き込まれたスレッドの 1 つを強制終了し、そのスレッドが開始したトランザクションをロールバックします。[ 11 ]ロックを実装するために、SQL Server にはロック マネージャーが含まれています。ロックマネージャは、データベースオブジェクトと、それらに設定されているロック(存在する場合)に加え、ロックに関するその他のメタデータを管理するメモリ内テーブルを管理します。共有オブジェクトへのアクセスはロックマネージャによって仲介され、リソースへのアクセスを許可するかブロックするかを決定します。
SQL Server は、他のデータベースで使用されている多版同時実行制御に類似した楽観的同時実行制御メカニズムも提供しています。このメカニズムでは、行が上書きされるのではなく、更新されるたびに行の新しいバージョンが作成されます。つまり、行は、その行のバージョンを作成したトランザクションの ID によってさらに識別されます。行の新しいバージョンと古いバージョンの両方が保存され、維持されますが、古いバージョンはデータベースから として識別されるシステムデータベースに移動されますTempdb。行の更新中は、他の要求はブロックされず(ロックとは異なり)、古いバージョンの行に対して実行されます。他の要求が更新ステートメントである場合、2つの異なるバージョンの行が生成されます。両方のバージョンはデータベースに保存され、それぞれのトランザクション ID によって識別されます。[ 11 ]
SQL Server データベースからデータを取得する主な方法は、クエリを実行することです。クエリは、 T-SQLと呼ばれるSQLの一種で表現されます。これは、Microsoft SQL Server がSybase SQL Serverとレガシーな関係にあるため共有している方言です。クエリは、取得対象を宣言的に指定します。クエリはクエリプロセッサによって処理され、クエリプロセッサは、要求されたデータを取得するために必要な一連の手順を決定します。クエリを実行するために必要な一連のアクションは、クエリプランと呼ばれます。同じクエリを処理する方法が複数存在する場合があります。たとえば、結合文と選択文を含むクエリの場合、両方のテーブルに対して結合文を実行し、その結果に対して選択文を実行すると、各テーブルから選択してから結合文を実行した場合と同じ結果になりますが、実行プランは異なります。このような場合、SQL Server は、最短時間で結果が得られると予想されるプランを選択します。これはクエリ最適化と呼ばれ、クエリプロセッサ自体によって実行されます。[ 11 ]
SQL Server には、コストベースのクエリオプティマイザが搭載されており、クエリの実行に必要なリソースという観点からコストを最適化しようとします。クエリが与えられると、クエリオプティマイザはデータベーススキーマ、データベース統計、そしてその時点のシステム負荷を参照します。そして、クエリで参照されるテーブルへのアクセス順序、操作の実行順序、そしてテーブルへのアクセスに使用するアクセス方法を決定します。例えば、テーブルに関連付けられたインデックスがある場合、そのインデックスを使用するかどうかを決定します。インデックスがほとんどの列に対して一意ではない列(「選択性」が低い)にある場合、データへのアクセスにインデックスを使用する価値は低い可能性があります。最後に、クエリを同時実行するかどうかを決定します。同時実行はプロセッサ時間の合計という点ではコストがかかりますが、実際には実行が複数のプロセッサに分割されるため、実行速度が向上する可能性があります。クエリのクエリプランが生成されると、一時的にキャッシュされます。同じクエリを再度呼び出す際には、キャッシュされたプランが使用されます。使用されていないプランは、しばらくすると破棄されます。[ 11 ] [ 33 ]
SQL Server では、ストアド プロシージャを定義することもできます。ストアド プロシージャはパラメーター化された T-SQL クエリで、サーバー自体に格納されます (一般的なクエリの場合のようにクライアント アプリケーションによって発行されるものではありません)。ストアド プロシージャは、クライアントから入力パラメーターとして送信された値を受け入れ、結果を出力パラメーターとして送り返すことができます。定義された関数や、同じストアド プロシージャを含む他のストアド プロシージャを (設定された回数まで) 呼び出すことができます。ストアド プロシージャには選択的にアクセスを提供できます。他のクエリとは異なり、ストアド プロシージャには名前が関連付けられており、実行時に実際のクエリに解決されます。また、クライアントから毎回コードを送信する必要がないため (名前でアクセスできるため)、ネットワーク トラフィックが軽減され、パフォーマンスがいくらか向上します。[ 34 ]ストアド プロシージャの実行プランも必要に応じてキャッシュされます。
T-SQL(Transact-SQL)は、Microsoft独自のSQL Server向け手続き型言語拡張機能です。標準SQLの命令セットを拡張したREPL (Read-Eval-Print-Loop)命令を提供し、データ操作( DML)およびデータ定義(DDL)命令に対応しています。SQL Server固有の設定、セキュリティ、データベース統計管理などが含まれます。
SQL Server 上で実行できる操作のキーワードを公開します。これには、データベース スキーマの作成と変更、データベースへのデータの入力と編集、サーバー自体の監視と管理などが含まれます。データを消費したりサーバーを管理したりするクライアント アプリケーションは、T-SQL クエリとステートメントを送信することで SQL Server の機能を活用します。これらのクエリとステートメントはサーバーによって処理され、結果 (またはエラー) がクライアント アプリケーションに返されます。このため、サーバーの統計情報を読み取ることができる読み取り専用テーブルが公開されます。管理機能は、T-SQL クエリから呼び出されて管理操作を実行できるシステム定義のストアド プロシージャを通じて公開されます。T-SQL を使用してリンク サーバーを作成することも可能です。リンク サーバーを使用すると、複数のサーバーで実行される操作を単一のクエリで処理できます。[ 35 ]
SQL Server Native Client は、Microsoft SQL Server バージョン 2005 以降のネイティブクライアント側データアクセスライブラリです。表形式データストリームの実装、ミラーリングされた SQL Server データベースのサポート、SQL Server でサポートされるすべてのデータ型の完全なサポート、非同期操作、クエリ通知、暗号化のサポート、単一のデータベースセッションでの複数の結果セットの受信など、SQL Server の機能をネイティブに実装しています。SQL Server Native Client は、 ADOやOLE DBなどの他のデータアクセステクノロジ用の SQL Server プラグインによって内部的に使用されます。SQL Server Native Client は、汎用データアクセス層をバイパスして直接使用することもできます。[ 36 ]
2011年11月28日に、 Linux用のSQL Server ODBCドライバーのプレビューリリースがリリースされました。[ 37 ]
Microsoft SQL Server 2005 には、SQL CLR(共通言語ランタイム)というコンポーネントが含まれており、これを介して.NET Frameworkと統合されます。.NET Framework を使用する他のほとんどのアプリケーションとは異なり、SQL Server 自体が .NET Frameworkランタイムをホストします。つまり、.NET Framework のメモリ、スレッド、およびリソース管理要件は、基盤となる Windows オペレーティングシステムではなく、SQL Server 自体によって満たされます。SQL Server は、.NET コードに対してデッドロック検出および解決サービスも提供します。SQL CLR を使用すると、C#やVB.NETなどの任意のマネージド.NET 言語でストアドプロシージャとトリガーを記述できます。マネージドコードは、データベースに永続化できるUDT(ユーザー定義型)を定義するためにも使用できます。マネージドコードはCLI アセンブリにコンパイルされ、型安全性が検証された後、データベースに登録されます。その後、他のプロシージャと同様に呼び出すことができます。[ 38 ]ただし、SQL CLR でコードを実行する場合、基本クラスライブラリのサブセットのみが利用できます。ユーザーインターフェイス機能に関連するほとんどの API は利用できません。[ 38 ]
SQL CLR 用のコードを作成する場合、SQL Server データベースに格納されたデータは、 SQL Server データにアクセスする他のマネージド アプリケーションと同様に、 ADO.NET API を使用してアクセスできます。ただし、これを行うと、コードが実行されているセッションとは異なる新しいデータベース セッションが作成されます。これを回避するため、SQL Server は ADO.NET プロバイダーにいくつかの拡張機能を提供し、実行中のコードを既にホストしている同じセッションに接続をリダイレクトできるようにします。このような接続はコンテキスト接続と呼ばれ、接続文字列でパラメーター を設定することで設定されます。SQL Server は、 ADO.NET API にいくつかの拡張機能も提供しており、表形式のデータや単一行のデータを操作するクラス、データベースに格納されたデータに関する内部メタデータを操作するクラスなどがあります。また、XQueryサポートを含む SQL Server の XML 機能へのアクセスも提供します。これらの拡張機能は、新しい XML データ型(クエリ、値、ノード関数)の導入により、T-SQL プロシージャでも利用できるようになります。[ 39 ]context connectiontrue
SQL Serverには、様々なアドオンサービスも含まれています。これらはデータベースシステムの運用に必須ではありませんが、コアとなるデータベース管理システムの上に付加価値サービスを提供します。これらのサービスは、SQL Serverコンポーネントの一部として実行されるか、Windowsサービスとしてアウトオブプロセスで実行され、制御および操作するための 独自のAPIを提供します。
SQL Server Machine Learning Services は SQL Server インスタンス内で動作し、ネットワーク経由でデータを送信したり、自身のコンピュータのメモリ制限に悩まされることなく、機械学習とデータ分析を行うことができます。このサービスには、データサイエンスでよく使用されるパッケージを含む Microsoft の R および Python ディストリビューションが付属しています。また、大規模な機械モデルの作成に使用できる独自パッケージ(例:revoscalepy、RevoScaleR、 microsoftml )もいくつか含まれています。
アナリストは、クライアントマシンをリモートSQLサーバーに接続してスクリプト実行をプッシュするか、RまたはPythonスクリプトをT-SQLクエリ内の外部スクリプトとして実行することができます。学習済みの機械学習モデルはデータベースに保存され、スコアリングに使用できます。[ 40 ]
インスタンスプログラミング環境内で使用されます。インスタンス間アプリケーションの場合、Service BrokerはTCP/IP経由で通信し、メッセージ交換を通じて異なるコンポーネント間の同期を可能にします。データベースエンジンの一部として実行されるService Brokerは、SQL Serverアプリケーションに信頼性の高いメッセージングおよびメッセージキューイングプラットフォームを提供します。[ 41 ]
サービスブローカーのサービスは、以下の部分から構成されます。[ 42 ]
メッセージタイプは、メッセージに使用されるデータ形式を定義します。これは、XMLオブジェクト、プレーンテキスト、バイナリデータ、および通知用のNULLメッセージ本文のいずれかです。コントラクトは、サービス間の会話で使用されるメッセージと、誰がメッセージをキューに入れることができるかを定義します。キューは、メッセージのストレージプロバイダーとして機能します。キューはSQL Serverによって内部的にテーブルとして実装されますが、挿入、更新、または削除機能はサポートされていません。サービスプログラムは、サービスブローカーメッセージを受信して処理します。通常、サービスプログラムはストアドプロシージャまたはCLRアプリケーションとして実装されます。ルートは、サービスブローカーがネットワーク上で配置されているネットワークアドレスです。[ 42 ]
また、サービスブローカーは、ネットワーク認証(NTLM、Kerberos、または承認証明書を使用)、整合性チェック、メッセージの暗号化などのセキュリティ機能をサポートしています。[ 42 ]
SQL Serverレプリケーションサービスは、SQL Serverによって、データベースオブジェクト全体または一部のレプリケーションと同期を行うために使用されます。レプリケーションエージェントは、ネットワーク上の他のデータベースサーバーやクライアント側のデータベースキャッシュなどです。レプリケーションサービスはパブリッシャー/サブスクライバーモデルを採用しており、変更は1つのデータベースサーバー(「パブリッシャー」)から送信され、他のデータベースサーバー(「サブスクライバー」)によって受信されます。SQL Serverは、以下の3種類のレプリケーションをサポートしています。[ 43 ]
SQL Server Analysis Services (SSAS) は、 SQL Server データベースにOLAPとデータマイニング機能を追加します。OLAP エンジンは、データのMOLAP、ROLAP、HOLAPストレージモードをサポートします。Analysis Services は、基盤となる通信プロトコルとしてXML for Analysis標準をサポートします。キューブデータには、 MDXおよび LINQ [ 47 ]クエリを使用してアクセスできます。[ 48 ]データマイニング固有の機能は、 DMXクエリ言語 を介して公開されます。Analysis Services には、データマイニングに使用するためのさまざまなアルゴリズム(決定木、クラスタリングアルゴリズム、ナイーブベイズアルゴリズム、時系列分析、シーケンスクラスタリングアルゴリズム、線形回帰分析、ロジスティック回帰分析、ニューラルネットワークなど)が含まれています。[ 49 ]
SQL Server Reporting Services (SSRS) は、SQL Server データベースから収集されたデータを用いたレポート生成環境です。Web インターフェースを介して管理されます。Reporting Services は、カスタムレポートアプリケーションの開発をサポートする Web サービスインターフェースを備えています。レポートはRDLファイルとして作成されます。[ 50 ]
レポートは、 Business Intelligence Development StudioがインストールされたMicrosoft Visual Studio(Visual Studio.NET 2003、2005、2008)[ 51 ]、または付属のレポートビルダーを使用して設計できます。作成されたRDLファイルは、 Excel、PDF、CSV、XML、BMP、EMF、GIF、JPEG、PNG、TIFF、[ 54 ] 、HTML Webアーカイブなど、さまざまな形式でレンダリングできます。 [ 52 ] [ 53 ]
もともと SQL Server 2000 のリリース後のアドオンとして導入されましたが、[ 55 ] Notification Services は、SQL Server 2005 で初めて Microsoft SQL Server プラットフォームの一部としてバンドルされました。[ 56 ] [ 57 ] SQL Server Notification Services は、Notification Services サブスクライバーに送信されるデータ駆動型通知を生成するメカニズムです。サブスクライバーは特定のイベントまたはトランザクション (データベース サーバーにトリガーとして登録されます) を登録します。イベントが発生すると、Notification Services は 3 つの方法のいずれかを使用して、イベントの発生を通知するメッセージをサブスクライバーに送信できます。これらの方法には、SMTP、SOAP、またはファイルシステムのファイルへの書き込みが含まれます。[ 58 ] Notification Services は、2008 年 8 月の SQL Server 2008 のリリースで Microsoft によって廃止され、SQL Server データベース プラットフォームの公式にサポートされているコンポーネントではなくなりました。
SQL Server Integration Services (SSIS) は、SQL Server のデータインポート、データ統合、データウェアハウスのニーズに対応する ETL 機能を提供します。Integration Servicesには、様々なソースからのデータ抽出、データクエリ、データ変換(集計、重複除去、正規化/非正規化、マージを含む)、そして変換後のデータを宛先データベースまたはファイルにエクスポートするといったワークフローを構築するための GUI ツールが含まれています。[ 59 ]

SQL Server フルテキスト検索サービスは、SQL Server データベースに格納されている非構造化テキストに特化したインデックス作成およびクエリサービスです。フルテキスト検索インデックスは、文字ベースのテキストデータを持つ任意の列に作成できます。これにより、テキスト列内の単語を検索できます。SQLLIKE演算子を使用して実行することもできますが、SQL Server フルテキスト検索サービスを使用する方が効率的です。Full では、ソース文字列の不完全一致が可能です。これは、 0 ~ 1000 の範囲のRank値で示されます。Rank 値が高いほど、より正確な一致を意味します。また、言語的一致(屈折検索)も可能です。つまり、単語の言語的バリエーション(異なる時制の動詞など)も、指定された単語と一致します(ただし、完全一致よりも低いランクです)。近接検索もサポートされています。つまり、検索対象の単語がクエリで指定された順序で出現していなくても、互いに近い位置にある場合も、一致とみなされます。 T-SQLはFTS機能にアクセスするために使用できる特別な演算子を公開します。[ 60 ] [ 61 ]
フルテキスト検索エンジンは、フィルタ デーモンプロセス ( msftefd.exe) と検索プロセス ( msftesql.exe) の 2 つのプロセスに分かれています。これらのプロセスは、SQL Server と対話します。検索プロセスには、インデクサー (フルテキスト インデックスを作成する) とフルテキスト クエリ プロセッサが含まれます。インデクサーは、データベースのテキスト列をスキャンします。また、バイナリ列にインデックスを付け、iFilterを使用してバイナリ BLOB から意味のあるテキストを抽出することもできます (たとえば、Microsoft Word文書がデータベースに非構造化バイナリ ファイルとして格納されている場合)。iFilter は、フィルタ デーモン プロセスによってホストされます。テキストが抽出されると、フィルタ デーモン プロセスはそれを単語のシーケンスに分割し、インデクサーに渡します。インデクサーは、頻繁に出現し検索には役立たないノイズ ワード( A、Andなど) をフィルターで除去します。残った単語で転置インデックスが作成され、各単語とその単語が見つかった列が関連付けられます。SQL Server 自体には、テーブルの変更を監視し、更新があった場合にインデクサーを呼び出すGathererコンポーネントが含まれます。 [ 62 ]
SQL Serverクエリプロセッサが全文クエリを受信すると、検索プロセス内のFTSクエリプロセッサに渡されます。FTSクエリプロセッサは、クエリを構成語に分解し、ノイズ語をフィルタリングし、内蔵のシソーラスを用いて各語の言語的異形を検索します。その後、これらの語は転置インデックスに照会され、その正確性の順位が算出されます。結果はSQL Serverプロセスを介してクライアントに返されます。[ 62 ]
SQLCMDはMicrosoft SQL Serverに付属するコマンドラインアプリケーションで、SQL Serverの管理機能を提供します。コマンドプロンプトからSQLクエリを記述・実行できます。また、スクリプト言語としても機能し、一連のSQL文をスクリプトとして作成・実行することもできます。作成されたスクリプトは.sqlファイルとして保存され、データベースの管理や、データベースのデプロイメント時にデータベーススキーマを作成するために使用されます。
SQLCMD は SQL Server 2005 で導入され、SQL Server バージョン 2008、2008 R2、2012、2014、2016、2019 まで継続されています。以前のバージョンの前身は OSQL と ISQL でした。これらは T-SQL 実行に関しては機能的に同等であり、コマンド ライン パラメーターの多くは同一ですが、SQLCMD によって汎用性が高まります。
Microsoft Visual Studio には、Microsoft SQL Server を使用したデータプログラミングのネイティブサポートが含まれています。SQL CLR で実行されるコードの作成とデバッグに使用できます。また、データベーススキーマをグラフィカルに作成、表示、編集できるデータデザイナーも含まれています。クエリは、ビジュアルまたはコードを使用して作成できます。SSMS 2008 以降では、 SQL クエリ用のIntelliSenseも提供されています。
SQL Server Management Studioは、SQL Server 2005以降に付属するGUIツールで、 Microsoft SQL Server内のすべてのコンポーネントを構成、管理、および運用できます。このツールには、スクリプトエディタと、サーバーのオブジェクトや機能を操作するためのグラフィカルツールの両方が含まれています。 [ 63 ] SQL Server Management Studioは、 SQL Server 2005以降、Microsoft SQL Serverの主要な管理インタフェースとしてEnterprise Managerに代わるものです。SQL Server Management StudioのバージョンはSQL Server Express Editionでも利用可能で、 SQL Server Management Studio Express (SSMSE)として知られています。[ 64 ]
SQL Server Management Studioの中心的な機能はオブジェクトエクスプローラーです。ユーザーはこれを使用して、サーバー内の任意のオブジェクトを参照、選択、操作できます。[ 65 ]クエリプランを視覚的に確認・分析したり、データベースのパフォーマンスを最適化したりすることができます。[ 66 ] SQL Server Management Studioは、新しいデータベースを作成したり、テーブルやインデックスを追加・変更して既存のデータベーススキーマを変更したり、パフォーマンスを分析したりするためにも使用できます。クエリウィンドウは、クエリの作成と実行のためのGUIベースのインターフェースを提供します。[ 11 ]
Azure Data Studioは、オプションのダウンロードとして利用可能なクロスプラットフォームのクエリエディターです。このツールを使用すると、クエリの作成、クエリ結果のエクスポート、SQLスクリプトのGitリポジトリへのコミット、基本的なサーバー診断の実行が可能です。Azure Data StudioはWindows、Mac、Linuxシステムで動作し、2026年2月28日にサポートが終了します。[ 67 ]
2018 年 9 月に一般提供が開始されました。リリース前のアプリケーションのプレビュー バージョンは、SQL Server Operations Studio と呼ばれていました。
Business Intelligence Development Studio (BIDS) は、Microsoft SQL Server Analysis Services、Reporting Services、Integration Servicesを利用したデータ分析およびビジネスインテリジェンスソリューションの開発に使用されるMicrosoftのIDEです。Microsoft Visual Studio開発環境をベースにしていますが、SQL Server サービス固有の拡張機能とプロジェクトタイプに合わせてカスタマイズされており、レポート (Reporting Services を使用)、キューブ、データマイニング構造 (Analysis Services を使用) 用のツール、コントロール、プロジェクトなどが含まれています。[ 68 ] SQL Server 2012 以降、この IDE は SQL Server Data Tools (SSDT) に改名されました。
{{cite web}}:欠落または空|title=(ヘルプ)