Microsoft SQL Server は、 Microsoftが構造化照会言語(SQL、しばしば「シークエル」と発音される)を使用して 開発した独自のリレーショナル データベース管理システムです。データベース サーバーとして、他のソフトウェア アプリケーションからの要求に応じてデータを保存および取得することを主な機能とするソフトウェア 製品です。これらのアプリケーションは、同じコンピュータ上、またはネットワーク (インターネットを含む) を介して別のコンピュータ上で実行できます。Microsoft は、さまざまなユーザー層とワークロードに対応するために、少なくとも 12 種類の Microsoft SQL Server エディションを販売しています。これらのワークロードは、小規模な単一マシン アプリケーションから、多数の同時ユーザーを抱える大規模なインターネット接続アプリケーションまで多岐にわたります。
Microsoft SQL Serverの歴史は、 1989年にOS/2オペレーティングシステム向けの16ビットサーバーである最初のMicrosoft SQL Server製品、SQL Server 1.0から始まり、現在に至っています。その名前はまさにその機能を表しており、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 ]
マイクロソフトが公開しているツールには以下が含まれます。
プロトコル層は、SQL Server への外部インターフェイスを実装します。SQL Server で呼び出すことができるすべての操作は、Microsoft が定義した形式であるTabular Data Stream (TDS) を介して SQL Server に伝達されます。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 (非構造化データblobs用)、Text (テキスト データ用)などのプリミティブ型を含む、さまざまなデータ型をサポートしています。浮動小数点数を整数に丸めるには、引数に応じて対称算術丸めまたは対称切り捨て ( fix )のいずれかを使用します。結果は 3 になります。SELECT Round(2.5, 0)
Microsoft SQL Server では、ユーザー定義複合型 (UDT) を定義して使用することもできます。また、サーバー統計を仮想テーブルおよびビュー (動的管理ビュー (DMV) と呼ばれる) として利用することもできます。テーブルに加えて、データベースには、ビュー、ストアドプロシージャ、インデックス、制約、トランザクションログなどの他のオブジェクトも格納できます。SQL Server データベースには最大 2 31個のオブジェクトを格納でき、最大ファイル サイズが 2 60バイト (1 エクサバイト)の複数の OS レベル ファイルにまたがることができます。 [ 11 ]データベース内のデータは、拡張子 のプライマリ データ ファイルに格納されます.mdf。.ndf拡張子 で識別されるセカンダリ データ ファイルは、単一のデータベースのデータを複数のファイル、オプションで複数のファイルシステムに分散させるために使用されます。ログ ファイルは.ldf拡張子 で識別されます。[ 11 ]
データベースに割り当てられるストレージ領域は、それぞれ 8 KB のサイズの連番ページに分割されます。ページは、SQL Server 操作のI/Oの基本単位です。ページには 96 バイトのヘッダーが付加され、ページ番号、ページタイプ、ページ上の空き領域、ページを所有するオブジェクトの ID など、ページに関するメタデータが格納されます。ページタイプは、ページに含まれるデータを定義します。このデータには、データベースに格納されているデータ、インデックス、ページがテーブルやインデックスにどのように割り当てられるかに関する情報を保持する割り当てマップ、前回のバックアップまたはログ記録以降に他のページに加えられた変更に関する情報を保持する変更マップ、または画像やテキストなどの大きなデータ型が含まれます。ページは I/O 操作の基本単位ですが、実際の領域管理は8 ページで構成されるエクステント単位で行われます。データベースオブジェクトは、エクステント内の 8 ページすべてにまたがる (「均一エクステント」) か、最大 7 つのオブジェクトとエクステントを共有する (「混合エクステント」) かのいずれかです。データベーステーブルの行は 1 ページを超えることはできないため、サイズは 8 KB に制限されます。ただし、データが 8 KB を超え、行にvarcharまたはvarbinaryデータが含まれている場合、それらの列のデータは新しいページ (または割り当て単位と呼ばれる一連のページ) に移動され、データへのポインタに置き換えられます。[ 30 ]
テーブルの物理的な格納では、行は一連のパーティション(1~n の番号)に分割されます。パーティションのサイズはユーザーが定義します。デフォルトでは、すべての行が単一のパーティションに格納されます。テーブルは、データベースをコンピュータクラスタ全体に分散させるために、複数のパーティションに分割されます。各パーティションの行は、B ツリー構造またはヒープ構造に格納されます。テーブルに関連付けられたクラスタ化インデックスがあり、行を高速に取得できる場合、行はインデックス値に従って順序付けされて格納され、B ツリーがインデックスを提供します。データはリーフのリーフノードにあり、リーフデータのインデックス値を格納する他のノードは、それぞれのノードからアクセスできます。インデックスが非クラスタ化の場合、行はインデックスキーに従ってソートされません。インデックス付きビューは、インデックス付きテーブルと同じストレージ構造を持ちます。クラスタ化インデックスのないテーブルは、順序付けされていないヒープ構造に格納されます。ただし、テーブルには、行を高速に取得するための非クラスタ化インデックスが存在する場合があります。状況によっては、ヒープ構造はクラスタ化構造よりもパフォーマンスが優れている場合があります。ヒープとBツリーはどちらも複数の割り当て単位にまたがることができます。[ 31 ]
SQL Server は、ディスク I/O を最小限に抑えるために、ページを RAM にバッファリングします 。任意の 8 KB ページをメモリにバッファリングでき、現在バッファリングされているすべてのページのセットはバッファ キャッシュと呼ばれます。SQL Server で使用可能なメモリの量によって、メモリにキャッシュされるページの数が決まります。バッファ キャッシュは、バッファマネージャーによって管理されます。ページを読み取ったり書き込んだりすると、そのページがバッファ キャッシュにコピーされます。以降の読み取りまたは書き込みは、ディスク上のバージョンではなく、メモリ上のコピーにリダイレクトされます。メモリ上のキャッシュが一定期間参照されていない場合にのみ、バッファ マネージャーによってディスク上のページが更新されます。ページをディスクに書き戻す際には、非同期 I/Oが使用されます。これにより、 I/O 操作はバックグラウンド スレッドで実行され、他の操作が I/O 操作の完了を待つ必要がなくなります。各ページは、書き込み時にチェックサムとともに書き込まれます。ページを読み戻すと、そのチェックサムが再度計算され、保存されているバージョンと照合され、その間にページが破損したり改ざんされたりしていないことが確認されます。[ 32 ]
SQL Server では、複数のクライアントが同じデータベースを同時に使用できます。そのため、複数のクライアントが同じデータを更新したり、別のクライアントによって変更中のデータを読み取ろうとしたりする場合など、データの整合性を確保するために、共有データへの同時アクセスを制御する必要があります。SQL Server には、悲観的同時アクセスと楽観的同時アクセスの 2 つの同時アクセス制御モードがあります。悲観的同時アクセス制御が使用されている場合、SQL Server はロックを使用して同時アクセスを制御します。ロックは、共有ロックまたは排他ロックのいずれかです。排他ロックは、ユーザーにデータへの排他アクセスを許可します。ロックが保持されている間は、他のユーザーはデータにアクセスできません。共有ロックは、一部のデータが読み取られるときに使用されます。複数のユーザーが共有ロックでロックされたデータを読み取ることができますが、排他ロックを取得することはできません。後者の場合、すべての共有ロックが解放されるまで待つ必要があります。
ロックは、テーブル全体、ページ、またはテーブルの行単位など、さまざまな粒度で適用できます。インデックスの場合は、インデックス全体またはインデックスリーフのいずれかに適用できます。使用する粒度は、データベース管理者がデータベースごとに定義します。きめ細かいロックシステムでは、より多くのユーザーが同時にテーブルまたはインデックスを使用できますが、より多くのリソースが必要になるため、必ずしもパフォーマンスが向上するわけではありません。SQL Server には、ロックよりも堅牢性は低いものの、リソース消費が少ない、より軽量な相互排他ソリューションであるラッチとスピンロックも含まれています。SQL Server は、通常ビジーではない DMV やその他のリソースにこれらを使用します。SQL Server はまた、ロックを取得するすべてのワーカー スレッドを監視して、デッドロックに陥らないようにします。デッドロックが発生した場合、SQL Server は是正措置を講じます。多くの場合、デッドロックに巻き込まれたスレッドの 1 つを強制終了し、開始したトランザクションをロールバックします。[ 11 ]ロックを実装するために、SQL Server にはロックマネージャが含まれています。ロックマネージャは、データベースオブジェクトと、それらに設定されているロック(存在する場合)、およびロックに関するその他のメタデータを管理するメモリ内テーブルを保持します。共有オブジェクトへのアクセスはロックマネージャによって制御され、ロックマネージャはリソースへのアクセスを許可するか、またはブロックします。
SQL Server は、他のデータベースで使用されるマルチバージョン同時実行制御と同様の楽観的同時実行制御メカニズムも提供します。このメカニズムでは、行が更新されるたびに、行を上書きするのではなく、行の新しいバージョンを作成できます。つまり、行は、そのバージョンを作成したトランザクションの ID によって追加的に識別されます。行の古いバージョンと新しいバージョンの両方が保存および維持されますが、古いバージョンはデータベースから として識別されるシステム データベースに移動されますTempdb。行が更新処理中の場合、他の要求はブロックされず (ロックとは異なり)、行の古いバージョンで実行されます。他の要求が更新ステートメントの場合、行の 2 つの異なるバージョンが作成され、両方ともそれぞれのトランザクション ID によって識別され、データベースに保存されます。[ 11 ]
SQL Server データベースからデータを取得する主な方法は、クエリを実行することです。クエリは、 T-SQLと呼ばれるSQLのバリアントを使用して記述されます。T-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のデータ操作(DML)およびデータ定義(DDL )命令セットを拡張するREPL (Read-Eval-Print-Loop)命令を提供し、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 には、.NET Frameworkと統合するためのSQL CLR (「共通言語ランタイム」)というコンポーネントが含まれています。 .NET Framework を使用する他のほとんどのアプリケーションとは異なり、SQL Server 自体が .NET Frameworkランタイムをホストします。つまり、.NET Framework のメモリ、スレッド、リソース管理の要件は、基盤となる Windows オペレーティングシステムではなく、SQLOS 自体によって満たされます。 SQLOS は、.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 データ型 (query、value、nodes 関数) の導入に伴い、T-SQL プロシージャでも利用できます。[ 39 ]context connectiontrue
SQL Serverには、さまざまなアドオンサービスも含まれています。これらはデータベースシステムの運用に必須ではありませんが、コアとなるデータベース管理システムの上に付加価値サービスを提供します。これらのサービスは、SQL Serverコンポーネントの一部として実行されるか、Windowsサービスとしてプロセス外で実行され、それぞれ独自のAPIを提供して制御および操作を行います。
SQL Server Agent は、ジョブのスケジュール設定やその他の自動化されたタスクを処理するMicrosoft SQL Serverのコンポーネントです。[ 40 ]これはWindows サービス として実行されるため、システムの起動時に自動的に開始することも、手動で開始することもできます。
一般的なシステムタスクとしては、メンテナンスプラン(バックアップなど)のスケジュール設定、Reporting Servicesサブスクリプションの管理、ログシッピングのサブタスク(バックアップ、コピー、復元、チェック)の実行などが挙げられます。T -SQLやコマンドラインステートメントのスケジュール設定といったユーザータスクもよく行われます。
SQLAgentはオペレーターとアラートをサポートしているため、管理者は電子メールなどで通知を受け取ることができます。
SQL Server の機械学習サービスは SQL Server インスタンス内で動作するため、ネットワーク経由でデータを送信したり、コンピュータのメモリ容量に制限されたりすることなく、機械学習やデータ分析を実行できます。このサービスには、データサイエンスで一般的に使用されるパッケージを含む Microsoft の R および Python ディストリビューションに加え、大規模な機械学習モデルを作成するために使用できる独自のパッケージ ( revoscalepy、RevoScaleR 、microsoftml など) も含まれています。
アナリストは、クライアントマシンをリモート SQL サーバーに接続してスクリプトの実行をプッシュするように構成するか、T-SQL クエリ内で外部スクリプトとして R または Python スクリプトを実行することができます。トレーニングされた機械学習モデルはデータベースに保存され、スコアリングに使用できます。[ 41 ]
インスタンス内のプログラミング環境で使用されます。インスタンス間アプリケーションの場合、サービス ブローカーはTCP/IPを介して通信し、メッセージの交換によってさまざまなコンポーネントを同期させることができます。データベース エンジンの一部として実行されるサービス ブローカーは、SQL Server アプリケーションに信頼性の高いメッセージングおよびメッセージ キューイングプラットフォームを提供します。[ 42 ]
サービスブローカーサービスは、以下の部分から構成されます。[ 43 ]
メッセージタイプは、メッセージに使用されるデータ形式を定義します。これは、XML オブジェクト、プレーン テキスト、バイナリ データ、および通知用のnullメッセージ本文のいずれかです。契約は、サービス間の会話で使用されるメッセージと、誰がメッセージをキューに入れることができるかを定義します。キューはメッセージのストレージ プロバイダとして機能します。これらは、SQL Server によって内部的にテーブルとして実装されますが、挿入、更新、または削除機能はサポートしていません。サービス プログラムは、サービス ブローカー メッセージを受信して処理します。通常、サービス プログラムは、ストアド プロシージャまたはCLRアプリケーションとして実装されます。ルートは、ネットワーク上でサービス ブローカーが配置されているネットワーク アドレスです。[ 43 ]
また、サービスブローカーは、ネットワーク認証(NTLM、Kerberos、または認証証明書を使用)、整合性チェック、メッセージ暗号化などのセキュリティ機能をサポートしています。[ 43 ]
SQL Server レプリケーション サービスは、SQL Server がデータベース オブジェクトを、全体または一部のみ、ネットワーク上の他のデータベース サーバーやクライアント側のデータベース キャッシュなどのレプリケーション エージェント間で複製および同期するために使用します。レプリケーション サービスはパブリッシャー/サブスクライバー モデルに従います。つまり、変更は 1 つのデータベース サーバー (「パブリッシャー」) によって送信され、他の (「サブスクライバー」) によって受信されます。SQL Server は 3 種類の異なるレプリケーションをサポートしています。[ 44 ]
SQL Server Analysis Services (SSAS) は、 SQL Server データベースにOLAPおよびデータ マイニング機能を追加します。OLAP エンジンは、データのMOLAP、ROLAP、およびHOLAPストレージ モードをサポートします。Analysis Services は、基盤となる通信プロトコルとしてXML for Analysis標準をサポートします。キューブ データは、 MDXおよび LINQ [ 48 ]クエリを使用してアクセスできます。[ 49 ]データ マイニング固有の機能は、 DMXクエリ言語 を介して公開されます。Analysis Services には、データ マイニングで使用するためのさまざまなアルゴリズム (決定木、クラスタリング アルゴリズム、ナイーブ ベイズアルゴリズム、時系列分析、シーケンス クラスタリング アルゴリズム、線形およびロジスティック回帰分析、ニューラル ネットワーク)が含まれています。[ 50 ]
SQL Server Reporting Services (SSRS) は、SQL Server データベースから収集したデータに基づいてレポートを生成する環境です。Web インターフェイスを介して管理されます。Reporting Services には、カスタム レポート アプリケーションの開発をサポートする Web サービス インターフェイスがあります。レポートはRDLファイルとして作成されます。[ 51 ]
レポートは、インストール済みのビジネス インテリジェンス開発スタジオ、または付属のレポート ビルダーを使用して、最新バージョンのMicrosoft Visual Studio (Visual Studio.NET 2003、2005、および 2008) [ 52 ]を使用して設計できます。作成された RDL ファイルは、Excel、PDF、CSV、XML、BMP、EMF、GIF、JPEG、PNG、TIFF [ 55 ]、および HTML Web Archiveなど、さまざまな形式でレンダリングできます[ 53 ] [ 54 ] 。
元々は SQL Server 2000 のリリース後のアドオンとして導入された Notification Services は、SQL Server 2005 で初めて、そして唯一、Microsoft SQL Server プラットフォームの一部としてバンドルされました。[ 57 ] [ 58 ] SQL Server Notification Services は、データ駆動型の通知を生成するメカニズムであり、通知サービスのサブスクライバーに送信されます。サブスクライバーは、特定のイベントまたはトランザクション (データベース サーバーにトリガーとして登録されます) を登録します。イベントが発生すると、Notification Services は、3 つの方法のいずれかを使用して、イベントの発生を通知するメッセージをサブスクライバーに送信できます。これらの方法には、SMTP、SOAP、またはファイルシステム内のファイルへの書き込みが含まれます。[ 59 ] Notification Services は、2008 年 8 月に SQL Server 2008 がリリースされたときに Microsoft によって廃止され、SQL Server データベース プラットフォームの公式にサポートされているコンポーネントではなくなりました。
SQL Server Integration Services (SSIS) は、SQL Server のデータインポート、データ統合、データウェアハウジングのニーズに対応する ETL 機能を提供します。Integration Services には、さまざまなソースからのデータ抽出、データのクエリ、データの変換 (集計、重複排除、正規化/非正規化、マージなど)、変換されたデータの宛先データベースまたはファイルへのエクスポートなどのワークフローを構築するための GUI ツールが含まれています。[ 60 ]

SQL Server フルテキスト検索サービスは、SQL Server データベースに格納されている非構造化テキスト専用のインデックス作成およびクエリサービスです。フルテキスト検索インデックスは、文字ベースのテキストデータを含む任意の列に作成できます。これにより、テキスト列内の単語を検索できます。SQLLIKE演算子を使用して実行することもできますが、SQL Server フルテキスト検索サービスを使用する方が効率的な場合があります。フルテキスト検索サービスでは、ソース文字列の不完全一致が可能です。これは、 0 から 1000 の範囲のランク値で示され、ランクが高いほど一致の精度が高くなります。また、言語的一致 (「屈折検索」) も可能です。つまり、単語の言語的バリエーション (異なる時制の動詞など) も、指定された単語に一致します (ただし、完全一致よりもランクは低くなります)。近接検索もサポートされています。つまり、検索対象の単語がクエリで指定された順序で出現していなくても、互いに近い位置にある場合も、一致とみなされます。 T-SQL は、FTS 機能にアクセスするために使用できる特別な演算子を公開しています。[ 61 ] [ 62 ]
全文検索エンジンは、フィルタデーモンプロセス(msftefd.exe)と検索プロセス(msftesql.exe)の 2 つのプロセスに分かれています。これらのプロセスは SQL Server と連携します。検索プロセスには、インデクサー(全文インデックスを作成する)と全文クエリプロセッサが含まれます。インデクサーは、データベース内のテキスト列をスキャンします。バイナリ列のインデックスも作成でき、iFilterを使用してバイナリ ブロブから意味のあるテキストを抽出します(たとえば、Microsoft Word文書がデータベースに非構造化バイナリ ファイルとして保存されている場合)。iFilter はフィルタデーモンプロセスによってホストされます。テキストが抽出されると、フィルタデーモンプロセスはそれを単語のシーケンスに分割し、インデクサーに渡します。インデクサーは、ノイズワード、つまり、頻繁に出現し検索に役立たないA、Andなどの単語をフィルタリングします。残りの単語を使用して転置インデックスが作成され、各単語が見つかった列に関連付けられます。SQL Server 自体には、テーブルの変更を監視し、更新があった場合にインデクサーを呼び出すGathererコンポーネントが含まれています。[ 63 ]
SQL Server クエリ プロセッサが全文クエリを受信すると、検索プロセスで FTS クエリ プロセッサに渡されます。FTS クエリ プロセッサはクエリを構成要素となる単語に分解し、不要な単語を除外し、組み込みのシソーラスを使用して各単語の言語的バリエーションを調べます。次に、単語は転置インデックスに対してクエリされ、その正確性のランクが計算されます。結果は SQL Server プロセスを介してクライアントに返されます。[ 63 ]
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 クエリのインテリセンスも提供されます。
SQL Server Management Studio は、SQL Server 2005 以降に付属するGUIツールで、 Microsoft SQL Server 内のすべてのコンポーネントを構成、管理、および運用します。このツールには、サーバーのオブジェクトと機能を操作するスクリプト エディターとグラフィカル ツールの両方が含まれています。 [ 64 ] 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)と呼ばれています。[ 65 ]
SQL Server Management Studio の中心的な機能はオブジェクト エクスプローラーであり、これによりユーザーはサーバー内の任意のオブジェクトを参照、選択、操作できます。[ 66 ]クエリ プランを視覚的に観察および分析したり、データベース パフォーマンスを最適化したりするために使用できます。[ 67 ] SQL Server Management Studio は、新しいデータベースの作成、テーブルやインデックスの追加または変更による既存のデータベース スキーマの変更、パフォーマンスの分析にも使用できます。クエリを記述および実行するための GUI ベースのインターフェイスを提供するクエリ ウィンドウが含まれています。[ 11 ]
Azure Data Studio は、オプションでダウンロードできるクロスプラットフォームのクエリ エディターです。このツールを使用すると、クエリの作成、クエリ結果のエクスポート、SQL スクリプトのGitリポジトリへのコミット、基本的なサーバー診断の実行が可能です。Azure Data Studio は Windows、Mac、Linux システムで動作し、2026 年 2 月 28 日にサポートが終了します。[ 68 ]
本製品は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開発環境をベースとしていますが、レポート (Reporting Services を使用)、キューブ、およびデータ マイニング構造 (Analysis Services を使用) 用のツール、コントロール、プロジェクトなど、SQL Server サービス固有の拡張機能とプロジェクト タイプでカスタマイズされています。[ 69 ] SQL Server 2012 以降では、この IDE は SQL Server Data Tools (SSDT) に名称変更されています。
{{cite web}}: CS1メンテナンス: アーカイブサービスは非推奨になりました (リンク)