SQL Serverとは何かを初心者向けにわかりやすく解説します。
インスタンス、データベース、ログインユーザーとデータベースユーザーの違いまで、図解を交えて整理します。
初学者や新人エンジニアの学習に最適です。
SQL Serverとは何か
SQL Serverは、Microsoftが開発したリレーショナルデータベース管理システム(RDBMS)です。
RDBMSの基本概念
SQL Serverは「RDBMS(リレーショナルデータベース管理システム)」と呼ばれるソフトウェアの一つです。
RDBMSとは、データを「表(テーブル)」の形で管理するデータベースのことを指します。
Excelのように行と列で構成された表をイメージすると分かりやすいです。

SQL Serverの特徴
| 特徴 | 説明 |
|---|---|
| Windowsとの親和性が高い | ・Windows認証(統合認証)が使える (Active Directoryユーザーやグループ単位でアクセス権管理も可能) ・.NETによる開発がスムーズ |
| GUIツールが充実している | SQL Server Management Studio(SSMS)により、初心者でも操作しやすい |
| トランザクション管理が強力 | データの整合性を保ちながら、安全に処理を実行できる |
| セキュリティ機能が充実 | 認証・権限管理・暗号化などの機能が標準で備わっている |
Oracleとの違い
SQL ServerはよくOracleにするかどうかで迷うことがあります。両製品の比較を説明します。
| 指標 | 説明 |
|---|---|
| 環境面 | Windowsと親和性が高い。 サーバがWindows Server・AD環境・AzureであればSQL Serverが自然にハマります。 ※主にWindowsで使われますが、Linux版も存在します。 |
| ライセンスコスト | Oracleは高額です。 しかし、オプションを追加すること柔軟に機能を追加できます。 <例> ・Oracle Real Application Clusters(RAC)・・・複数サーバで1つのDBを構成 ・Oracle Advanced Security・・・暗号化 ・Oracle Multitenant・・・1つのDBに複数DB(PDB)を収容 |
| 性能 | 性能面はどちらも差がありません。 |
| 可用性・障害対策 | OracleはRACという複数のサーバーで稼働させて、障害発生時はフェイルオーバーする機能があります。 SQL Serverは、Always Onなど比較的シンプルな構成 |
| セキュリティ | 認証や暗号化機能はSQL ServerもOracleも備わっています。 |
SQL Serverの構成要素
インスタンスとは
インスタンスとは、「SQL Serverの実行単位(=1つのDBサーバーのまとまり)」のことです。
次の記載の通り、それぞれのインスタンスは独立して動作するため、設定やデータベースを分けて管理できます。
- インスタンスは実行単位であり、サービスとして動いている
- インスタンスごとにインストールをするので、インストール先もインスタンスごとに異なる
- 1台のサーバに複数のインスタンスを作成できる
- 1つのインスタンスに複数のデータベースを作成できる

インスタンスは、テスト環境用インスタンス、本番環境用インスタンスのように分けて使うことがありますが、この場合は本番環境へ影響が出ないよう、メモリの設定など配慮する必要があります。
既定のインスタンスと名前付きインスタンス
インスタンスは、SQLServerをインストールしたときに作成される「既定のインスタンス」と、追加する際に使用する「名前付きインスタンス」の2種類がある。
| 既定のインスタンス | 名前付きインスタンス |
|---|---|
| ・初めてSQLServerをインストールしたときに作成される ・1台のサーバに1つのみ存在 ・名前の変更はできない | ・追加で作成されたインスタンス ・複数の作成が可能 |
インスタンス設定
SQL Serverの設定は、インスタンスでの設定になります。
設定は以下があります。
- ネットワーク設定
プロトコルやポート番号などを指定します。
設定は[SQL Server構成マネージャー]で、[ネットワークの構成]からTCP/IPを有効化し、ポート番号(通常1433)を設定。 - メモリの設定
使用するメモリの上限などを設定します。
メモリの設定については、「SQL Serverのメモリ構成・役割・仕組み」を参照してください。
SQL ServerのインスタンスとOracleのインスタンスの違い
Oracleにもインスタンスがありますが、SQL Serverとは考え方が違います。
| 項目 | 説明 |
|---|---|
| 1インスタンスは・・・ | SQL Serverは、データベースエンジンの実行単位(サービス) Oracleは、メモリ構造(SGA)+バックグラウンドプロセスの集合 |
| データベースとの関係 | SQL Serverは、1インスタンスの中に 複数のデータベースを作れる Oracleは、基本的に1対1(※PDBは複数作成できる) |
| 複数インスタンス | SQL Serverは、同じサーバー内に複数インスタンスを共存可能(名前付きインスタンス) Oracleは、RAC構成の場合、複数インスタンスで1データベースを共有する |
データベースとは
データベースとは、「データをまとめて管理する単位」です。
データベースの中にテーブルやビューなどのオブジェクトが格納されます。

SQL Serverのユーザ
SQL Serverのユーザは、ログインユーザとデータベースユーザの2つがあります。
それぞれについて説明します。
ログインユーザとは
ログインユーザとは、SQL Serverのインスタンスに接続するためのアカウントです。
SSMSで接続をする場合は、このログインユーザを使用します。

サーバロール
サーバーロールとは、サーバー全体に対する権限のグループでログインユーザに対して割り当てます。

実務でよく使用されるサーバロールを紹介します。
- sysadmin(システム管理者)
すべての操作が可能な最強権限 - serveradmin(サーバー設定管理)
サーバー構成の変更(メモリ設定など)、SQL Serverのシャットダウンなどサーバーの設定変更ができる - securityadmin(セキュリティ管理)
ログインの作成・削除、ログインへのロール付与、パスワード変更 - dbcreator(データベース作成)
新規データベース作成、ータベース削除 - processadmin(プロセス管理)
実行中のセッションの確認、クエリの強制終了(KILL) - public(全ユーザ共通)
すべてのログインが所属するロール

データベースユーザとは
データベースユーザとは、データベース内で操作を行うユーザで、データベースごとに作成されます。
基本的にデータベースユーザは、ログインユーザと紐付けられますが、ログインなしのデータベースユーザも作成できます。
これは次の章で説明します。
ログインユーザとデータベースユーザのマッピング
基本的にデータベースユーザは、ログインユーザとマッピングさせることで作成されます。
なお、ログインを必要としないデータベースユーザの場合(既存のログイン経由で EXECUTE AS などで使う)は、対象のデータベースの中にデータベースユーザだけを作成します。

データベースロールとは
データベースロールとは、データベースユーザに対して割り振りできるデータベース内の権限をまとめたものです。
データベースロールは次のものがあります。
- db_owner(何でもできる)
テーブル作成・削除、データの参照・更新、権限の付与・剥奪、ユーザー管理、スキーマ変更 など全部 - db_securityadmin(権限付与など)
ロールのメンバー追加・削除、権限(GRANT / DENY)の管理 - db_accessadmin(ユーザー管理担当)
ユーザーの追加・削除(CREATE/DROP USER)
※権限そのものの付与はできない - db_backupoperator(バックアップ担当)
- db_ddladmin(構造変更担当)
テーブル・ビュー・インデックスなどの作成・変更・削除
※データの中身(SELECT/UPDATE)は別権限 - db_datareader(読み取り専用)
全テーブル・ビューに対して SELECTが可能 - db_datawriter(登録・更新・削除専用)
INSERT / UPDATE / DELETEが可能
※SELECTは含まれない - public(全ユーザーが必ず所属)
デフォルトの最小権限
ログインユーザとデータベースユーザ作成
ログインユーザをデータベースへマッピング(権限付与)すると、マッピングしたデータベースに同じ名前のデータベースユーザが作成されます。
次の例はログインユーザTaroをデータベース「db01」に対し、db_owner(何でもできる)を付与しています。

同じくデータベース「db02」に対しは、db_datareader(読み取り専用)を付与しています。

まとめ
- SQL Serverは「インスタンス」と「データベース」の階層構造で成り立っている
- インスタンスはSQL Serverの実行単位であり、複数のデータベースを管理する
- データベースはテーブルやデータを格納する単位である
- SQL Serverは「ログイン」と「データベースユーザ」の2段階でアクセスを管理する
- ログインユーザは「SQL Serverに接続できるか」を管理する(サーバーレベル)
- データベースユーザは「データベース内で何ができるか」を管理する
- サーバーロールは「サーバー全体に対する権限」をまとめたもの
- データベースロールは「データ操作の権限」をまとめたもの
- ログインユーザにはサーバーロールを割り当てる
- データベースユーザにはデータベースロールを割り当てる
- sysadminはすべての操作が可能な最強権限のため、付与は最小限にする


コメント