夜は大分気温が下がってきたような気がします。そろそろエアコンなしで寝てもいいかも。
さて、バイト先でWindowsのSQL 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」にチェックを入れます。
認証モードを変更
パスワード認証でログインができるようにサーバ認証モードを変更します。
SSMSを起動し、オブジェクトエクスプローラーの「サーバー」の「プロパティー」を開きます。「サーバ」がちょっと分かりにくいですが、以下の一番上に表示される部分です。
「プロパティー」の「セキュリティ」タブにある「サーバ認証」を「SQL Server認証モードとWindows 認証モード」に変更します。
確認
SSMSを起動して、サーバーへの接続時に、「認証」を「SQLサーバ認証」に変更し、作成したユーザとパスワードを指定して「接続」します。
許可を与えたデーターベースのテーブルが参照できるようなら設定は大丈夫だと思います。