SQL Server入門|インスタンス・ユーザーの基礎をわかりやすく解説

SQL Server

SQL Serverとは何かを初心者向けにわかりやすく解説します。
インスタンス、データベース、ログインユーザーとデータベースユーザーの違いまで、図解を交えて整理します。
初学者や新人エンジニアの学習に最適です。

SQL Serverとは何か

SQL Serverは、Microsoftが開発したリレーショナルデータベース管理システム(RDBMS)です。

RDBMSの基本概念

SQL Serverは「RDBMS(リレーショナルデータベース管理システム)」と呼ばれるソフトウェアの一つです。

RDBMSとは、データを「表(テーブル)」の形で管理するデータベースのことを指します。
Excelのように行と列で構成された表をイメージすると分かりやすいです。

RDBMS

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はすべての操作が可能な最強権限のため、付与は最小限にする

コメント

タイトルとURLをコピーしました