はじめに
Azure SQL Databaseを初めて初めてデプロイする際に管理者ログインユーザーとパスワードを指定して構築する必要があります。
管理者ログインユーザーとは別で追加したログインユーザーを使用してSSMS経由でデータベースにアクセスしようとしたところ、以下のようなエラーが発生しログインができませんでした。
ADDITIONAL INFORMATION:
The server principal 'ログインユーザー名' is not able to access the database 'master' under the current security context.
Cannot open user default database. Login failed.
Login failed for user 'ログインユーザー名'. (Microsoft SQL Server、エラー: 916)
このメッセージからdefault databaseをユーザーデータベースに変更する必要があると思いましたが、Azure SQL Databaseではログインに対してDefault databaseが変更できない仕様のようです。(Default databaseは必ずmasterデータベース)
そのため追加したログインユーザーでSQL Server Management Studio (SSMS) や sqlcmdから接続する際にはデータベース名を指定する必要があります。
手順
SSMSからデータベースを指定して接続する
① サーバー名、認証情報を入力した後、SSMSの認証画面の右下にある"Options >>"を開く
② Connect to database 欄にログイン先のデータベースを指定
③ Connectを押下し、接続
sqlcmdからデータベースを指定して接続する
① 接続元のマシンからコマンドプロンプトや PowerShell を開く。
② 以下の接続コマンドで対象のデータベースに接続(-d <データベース名>にてデータベースを指定)
接続コマンド例
sqlcmd -S -U <ログイン名> -P <パスワード> -d <データベース名>
おわりに
参考情報:追加のログインと管理アクセス許可を持つユーザーを作成する
参考情報:CREATE LOGIN (Transact-SQL)