Dockerで起動したSQL Serverの既定のデータベースを変更したユーザーでログインできなくなった場合の解決方法

◆ Live配信スケジュール ◆
サイオステクノロジーでは、Microsoft MVPの武井による「わかりみの深いシリーズ」など、定期的なLive配信を行っています。
⇒ 詳細スケジュールはこちらから
⇒ 見逃してしまった方はYoutubeチャンネルをご覧ください
VSCode Dev Containersで楽々開発環境構築祭り〜Python/Reactなどなど〜
Visual Studio Codeの拡張機能であるDev Containersを使ってReactとかPythonとかSpring Bootとかの開発環境をラクチンで構築する方法を紹介するイベントです。
https://tech-lab.connpass.com/event/311864/

はじめに

こんにちは!中途入社のなーがです。前回はデータベースユーザーのデフォルトスキーマを切り替えてみるという内容でしたが、今回はDockerで起動したSQL Serverの既定のデータベースを変更したユーザーでログインできなくなった場合の解決方法について書こうと思います。解決方法をすぐに知りたい方はこちらから確認できます。

前回のブログでDockerを使用した検証用環境を作成した際に、saの既定のデータベースを変更するという内容があったと思います。スキーマの設定を確認するためにTestDBの作成と削除を繰り返していたのですが、saの既定のデータベースをmasterからTestDBに変更したままTestDBを削除してしまったため、saでログインできなくなってしまいました。このとき作成していたのは検証用環境であったためコンテナごと作成しなおす事も出来たのですが、商用環境等で同じ状況に遭遇した場合に役立つと思い調べてみることにしました。

起こったこと

では、実際に作業を行ってみようと思います。まず、saの既定のデータベースを確認します。セキュリティ→ログインからsaをダブルクリックします。

saの既定のデータベースはmasterとなっています。

saの既定のデータベースをmasterからTestDBに変更します。

ALTER LOGIN sa WITH DEFAULT_DATABASE=TestDB;

先程と同様にsaのプロパティを確認すると、既定のデータベースがTestDBに変更されました。

それでは、TestDBを削除します。TestDBを右クリックし、「既存の接続を閉じる」にチェックを入れて「OK」をクリックします。

テストDBが削除されました。

saでログインしようとすると、アクセスに失敗してしまいます。

こちらの現象はDBを削除したときだけでなく、ログインユーザーのデフォルトデータベースに設定しているDB名を変更した際にも発生するようです。

解決方法

ターミナルからコンテナ内のsqlcmdを使用してsaでログインします。オプションdでmasterを指定しているとこがミソだと思います。

Dockerコンテナ上のSQL Serverにsqlcmdでアクセスする方法はMSの公式ドキュメントにも記載がありましたが、分かりやすかったこちらを参考にさせて頂きまました。また、sqlcmdを使用して既定のデータベースを変更する方法はこちらを参考にさせて頂きました。

docker exec -it コンテナ名 /opt/mssql-tools/bin/sqlcmd -U sa -P saのパスワード -d master

Alter loginでsaユーザーの既定のデータベースをmasterに戻します。

alter login sa with default_database=master

「GO」と入力してSQLを実行します。

「exit」と入力してsqlcmdを終了します。

saでログインしてみると、無事アクセスすることが出来ました!

さいごに

今回はDockerで起動したSQL Serverの既定のデータベースを変更したユーザーでログインできなくなった場合の解決方法について書きました。既定のデータベースを変更するとはあまりないと思いますが、初見では対処に困ると思います。これからも業務中に学んだことをブログにしていきたいと思います。

アバター画像
About なーが 13 Articles
前職は.NETやPythonを用いた業務アプリケーション、プロトタイプAPI開発に従事。2023年中途入社。とりあえずやってみて、苦しんで覚える系エンジニア。AWS認定3冠(SAA、MLS、DAS)

ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

0人がこの投稿は役に立ったと言っています。


ご覧いただきありがとうございます。
ブログの最新情報はSNSでも発信しております。
ぜひTwitterのフォロー&Facebookページにいいねをお願い致します!



>> 雑誌等の執筆依頼を受付しております。
   ご希望の方はお気軽にお問い合わせください!

Be the first to comment

Leave a Reply

Your email address will not be published.


*


質問はこちら 閉じる