WindowsでSQL Serverをインストールし、データベース、ユーザーを作成する
初めに
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をインストールします。
インストール手順
ダウンロードページのインストールするエディションの今すぐダウンロードをクリックすると実行ファイルがダウンロードされるので実行します。
以下の画面が表示されるので今回は基本を選択します。

同意するを選択します。

インストールをクリックします。

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

原因調査
SQL Server インストール ログ フォルダーのSystemConfigurationCheck_Report.htmを開き原因を調査します。
私の場合、IsFirewallEnabledに警告が出ていました。

以下の手順に従って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 Management Studio(SSMS)のインストール
SQL Server Management Studio (SSMS) は、SQL インフラストラクチャを管理するための統合環境です。
SSMSを使用することでデータベースの管理がGUIから行えるようになります。
参考記事: SQL Server Management Studio (SSMS) とは何か?
インストール手順
ダウンロードページからインストーラーをダウンロードし、実行します。
以下の画面が表示されるので、インストールをクリックします。

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

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

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

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

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

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

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

ログイン、データベースユーザーの作成
SQL Serverを操作するにはログインとデータベースユーザーの2つが必要となります。
以下にそれぞれの役割を記載します。
| 名前 | 役割 |
|---|---|
| ログイン | インスタンス(SQL Server全体)にログインするのに使用します。 |
| データベースユーザー | データベースごとに作成し、データベースを操作するのに使用します。 |

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

全般を選択し、以下の情報を入力します。
| 項目名 | 入力内容 |
|---|---|
| ログイン名 | 任意の値 |
| SQL Server認証 | チェックを入れる |
| パスワード、パスワードの確認入力 | 任意の値、パスワードポリシーを参考にパスワードを入力する |
| パスワードポリシーを適用する | チェックを入れる |
| パスワードの期限を適用する | チェックを外す |
| 次回ログイン時のパスワード変更を必須にする | チェックを外す |
| 既定のデータベース | 上記手順で作成したデータベース |
情報の入力が完了したらOKをクリックします。

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

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

全般を選択し、以下の情報を入力します。
| 項目名 | 入力内容 |
|---|---|
| ユーザーの種類 | ログインが設定されたSQLユーザー |
| ユーザー名 | 任意の値 |
| ログイン名 | 上記手順で作成したログイン名 |

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

各ロールについての詳細はデータベース レベルのロールを参照してください。
入力が完了したらOKをクリックします。

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

参考記事: データベース ユーザーの作成
終わりに
今回はSQL ServerをWindows11にインストールし、データベース、ログイン、ユーザーを作成するところまで説明しました。
今後私を含む誰かの役に立てば幸いです。
Discussion
幸せになりました
ありがとうございます