👻

WindowsでSQL Serverをインストールし、データベース、ユーザーを作成する

2024/03/14に公開

初めに

AzureにSQL Serverを立ち上げてWebアプリケーション開発を行っていたのですが、ローカルのネットワークに変更があり1433ポートでの外部アクセスができなくなりました。
そこで、ローカルのWindows11にSQL Serverを立ち上げて開発環境を作成しました。
私自身にリレーショナルデータベースの知見があまりなかったこともあり非常に時間がかかったので、Windows上にSQL Serverを立ち上げユーザーを作成する方法を手順として残しました。

想定環境

以降の手順ははすべてWindows11 23H2上で行います。

インストールするソフトウェア

以下のソフトウェアをインストールします。

  • SQL Server 2022
  • SQL Server Management Studio (SSMS) 19.3

SQL Serverのインストール

ダウンロードページからダウンロード可能です。

Developer EditionとExpress Editionの違い

無料で利用可能なエディションとしてDeveloper EditionとExpress Editionの2つがありますが、それぞれ以下のような特徴があります。

Edition 特徴
Developer Edition Enterprise Editionと同等の機能が含まれますが、開発及びテストの利用に対してのみライセンスが与えられます。
Express Edition エントリレベルの機能のみ含まれ、開発、テスト、小規模アプリケーションに使利用できます。

Developer EditionとExpress Editionの機能についての詳細な違いはSQL Server 2022 の各エディションとサポートされている機能を参照してください。

今回はローカルでの開発に使用するのでWindows版のDeveloper Editionをインストールします。

インストール手順

ダウンロードページのインストールするエディションの今すぐダウンロードをクリックすると実行ファイルがダウンロードされるので実行します。

以下の画面が表示されるので今回は基本を選択します。
SQL Serverインストール手順1

同意するを選択します。
SQL Serverインストール手順2

インストールをクリックします。
SQL Serverインストール手順3

トラブルシューティング(IsFirewallEnabled)

Windows11の場合、インストール時に以下のエラーが発生し、インストールに失敗する場合があります。
Exit code (Dicimal): -2061893606Error

SQL Serverインストール失敗

原因調査

SQL Server インストール ログ フォルダーSystemConfigurationCheck_Report.htmを開き原因を調査します。

私の場合、IsFirewallEnabledに警告が出ていました。
SQL Serverインストール失敗原因

以下の手順に従ってFirewallの設定を行います。

Firewall設定

SQL Serverで使用する1433、1434ポートのインバウンドアクセスを許可するルールを作成します。

1433、1434ポートはそれぞれ以下の用途に使用されます。

ポート 用途
1433 インスタンスへのTCP経由での通常の接続に使用されます。
1434 専用管理者接続(DAC)に使用されます。

各ポートの用途はSQL Server で使用されるポートを参照してください。

Powershellを管理者権限で開き、以下のコマンドを実行します。

> New-NetFirewallRule -DisplayName "SQLServer default instance" -Direction Inbound -LocalPort 1433 -Protocol TCP -Action Allow
> New-NetFirewallRule -DisplayName "SQLServer Browser service" -Direction Inbound -LocalPort 1434 -Protocol UDP -Action Allow

以下のコマンドを実行し、正常に登録できているか確認します。

> Get-NetFirewallRule | Where-Object DisplayName -Like 'SQLServer*'


Name                          : {deea096d-b5df-477d-a93c-a80c52e23d16}
DisplayName                   : SQLServer default instance
Description                   :
DisplayGroup                  :
Group                         :
Enabled                       : True
Profile                       : Any
Platform                      : {}
Direction                     : Inbound
Action                        : Allow
EdgeTraversalPolicy           : Block
LooseSourceMapping            : False
LocalOnlyMapping              : False
Owner                         :
PrimaryStatus                 : OK
Status                        : 規則は、ストアから正常に解析されました。 (65536)
EnforcementStatus             : NotApplicable
PolicyStoreSource             : PersistentStore
PolicyStoreSourceType         : Local
RemoteDynamicKeywordAddresses : {}
PolicyAppId                   :

Name                          : {738e8387-687c-4284-9674-0099d475c685}
DisplayName                   : SQLServer Browser service
Description                   :
DisplayGroup                  :
Group                         :
Enabled                       : True
Profile                       : Any
Platform                      : {}
Direction                     : Inbound
Action                        : Allow
EdgeTraversalPolicy           : Block
LooseSourceMapping            : False
LocalOnlyMapping              : False
Owner                         :
PrimaryStatus                 : OK
Status                        : 規則は、ストアから正常に解析されました。 (65536)
EnforcementStatus             : NotApplicable
PolicyStoreSource             : PersistentStore
PolicyStoreSourceType         : Local
RemoteDynamicKeywordAddresses : {}
PolicyAppId                   :

参考記事: SQL Server のアクセスを許可するための Windows ファイアウォールの構成

Firewallの設定が完了したら、再度SQL Serverをインストールします。

インストールが完了すると以下の画面が表示されます。
接続文字列は後程使用するのでコピーして控えておきます。
閉じるをクリックしてください。
SQL Serverインストール完了1

終了しますか?と表示されるのではいをクリックします。
SQL Serverインストール完了2

SQL Server Management Studio(SSMS)のインストール

SQL Server Management Studio (SSMS) は、SQL インフラストラクチャを管理するための統合環境です。
SSMSを使用することでデータベースの管理がGUIから行えるようになります。

参考記事: SQL Server Management Studio (SSMS) とは何か?

インストール手順

ダウンロードページからインストーラーをダウンロードし、実行します。

以下の画面が表示されるので、インストールをクリックします。
SSMSインストール

インストールが完了すると以下の画面が表示されるので、閉じるをクリックします。
SSMSインストール完了

データベースの作成

上記手順でインストールしたSQL ServerにSSMSを使用してデータベースを作成します。

データベース作成手順

上記手順でインストールしたSSMSを起動します。
接続画面が表示されるので、SQL Serverインストール時に控えた接続文字列のServer=に続く文字列をサーバー名に入力します。
サーバー名

認証はWindows認証を選択します。
入力完了後接続をクリックします。
SSMS接続

接続に成功すると以下の画面が表示されます。
SSMS接続成功

オブジェクトエクスプローラー内のサーバー名の配下にあるデータベースを右クリックし、新しいデータベースをクリックします。
データベースの作成1

データベース名に任意の値を入力し、OKをクリックします。
データベースの作成2

以下のようにデータベースが作成されます。
データベースの作成成功

ログイン、データベースユーザーの作成

SQL Serverを操作するにはログインとデータベースユーザーの2つが必要となります。
以下にそれぞれの役割を記載します。

名前 役割
ログイン インスタンス(SQL Server全体)にログインするのに使用します。
データベースユーザー データベースごとに作成し、データベースを操作するのに使用します。

ログイン、ユーザーのイメージ

ログインの作成手順

オブジェクトエクスプローラー内のサーバー名、セキュリティの配下にあるログインを右クリックし、新しいログインをクリックします。
ログインの作成1

全般を選択し、以下の情報を入力します。

項目名 入力内容
ログイン名 任意の値
SQL Server認証 チェックを入れる
パスワード、パスワードの確認入力 任意の値、パスワードポリシーを参考にパスワードを入力する
パスワードポリシーを適用する チェックを入れる
パスワードの期限を適用する チェックを外す
次回ログイン時のパスワード変更を必須にする チェックを外す
既定のデータベース 上記手順で作成したデータベース

情報の入力が完了したらOKをクリックします。
ログインの作成2

以下のようにログインが作成されます。
ログインの作成完了

参考記事: ログインの作成

データベースユーザーの作成手順

オブジェクトエクスプローラー内のサーバー名、データベース、上記手順で作成したデータベース、セキュリティの配下にあるユーザーを右クリックし、新しいユーザーをクリックします。
データベースユーザーの作成1

全般を選択し、以下の情報を入力します。

項目名 入力内容
ユーザーの種類 ログインが設定されたSQLユーザー
ユーザー名 任意の値
ログイン名 上記手順で作成したログイン名

データベースユーザーの作成2

次にメンバーシップを選択します。
今回はテーブルの作成、レコードの追加、更新、削除、閲覧が可能なユーザーを作成したいので、db_accessadmindb_datareaderdb_datawriterにチェックを入れます。

各ロールでは以下の操作が可能です。
ロール

各ロールについての詳細はデータベース レベルのロールを参照してください。

入力が完了したらOKをクリックします。
データベースユーザーの作成3

以下のようにデータベースユーザーが作成されます。
データベースユーザーの作成完了

参考記事: データベース ユーザーの作成

終わりに

今回はSQL ServerをWindows11にインストールし、データベース、ログイン、ユーザーを作成するところまで説明しました。
今後私を含む誰かの役に立てば幸いです。

Discussion