47歳でやむなくセミリタイア

病気のためセミリタイアをすることに。現在は週20時間程度のバイトをしています。その他、雑多なことを記録として書いています。

技術メモ: Yii2からSQL Serverをアクセスする (SQL Serverの設定編)

夜は大分気温が下がってきたような気がします。そろそろエアコンなしで寝てもいいかも。

さて、バイト先でWindowsSQL Serverのデーターベースをmysqlに移すというのをしたのですが、その時、データの移行のためにYii2からSQL Serverにアクセスした時のメモです。

まずはWindows側の設定です。Windows側は、データーベースファイル(.mdf, .ldf)だけがある状態です。

SQL Server 2019 の設定

SQL Server 2019 ExpressとSSMS (Microsoft SQL Server Management Studio)をダウンロードしてインストールします。

普通にインストールするだけです。SQL Server 2019 Expressは「基本」で構いません。

ポート番号の設定

デフォルトではポート番号が動的ポートとなっていて、SSMSなどからアクセスできないのでポート番号を固定します。

スタートメニューから「SQL Server 2019 構成マネージャー」を起動します。

SQL Server ネットワークの構成」→「SQL EXPRESS のプロトコル」→「TCP/IP」のプロパティーと選んで、 「IP アドレスの」のタブの一番下の項目の「TCP 動的ポート」の部分を、1433に設定します。

データーベースのインポート(アタッチ)

データーベースファイルをアタッチします。

SSMSを管理者権限で起動して、Windows認証でログインし、オブジェクトエクスプローラーの「データーベース」を右クリックして、「アタッチ」を選びます。

「追加」で*.mdfを選択、「OK」でアタッチは完了です。

ユーザの作成

phpからアクセスするためのユーザを作成して、データベースへのアクセス許可を与えます。

SSMSを起動し、オブジェクトエクスプローラーの「セキュリティ」→「ログイン」を右クリックして、「新しいログイン」を選びます。

「ログイン名」を入れて、「SQL Server認証モード」を選んで、「パスワード」を入力します。

「パスワードポリシー」のチェックは外しておいた方が良いかもしれません。

作成したユーザにデータベースのアクセス許可を与える

ユーザーの作成と同時に行うこともできます。

SSMSを起動し、オブジェクトエクスプローラーの「セキュリティ」→「ログイン」から、作成したユーザをダブルクリックで選択します。

「ユーザーマッピング」のタグを選ぶと、存在するデーターベースの一覧が表示されるので、許可を与えたいデーターベースにチェックを入れます。

データーベースを選択すると、許可の一覧が表示されるので、「db_datareader」「db_datawriter」「db_ddladmin」にチェックを入れます。

f:id:ekutajp:20200821130909p:plain

認証モードを変更

パスワード認証でログインができるようにサーバ認証モードを変更します。

SSMSを起動し、オブジェクトエクスプローラーの「サーバー」の「プロパティー」を開きます。「サーバ」がちょっと分かりにくいですが、以下の一番上に表示される部分です。

f:id:ekutajp:20200821122956p:plain

「プロパティー」の「セキュリティ」タブにある「サーバ認証」を「SQL Server認証モードとWindows 認証モード」に変更します。

確認

SSMSを起動して、サーバーへの接続時に、「認証」を「SQLサーバ認証」に変更し、作成したユーザとパスワードを指定して「接続」します。

許可を与えたデーターベースのテーブルが参照できるようなら設定は大丈夫だと思います。