【自分用メモ】
SQLServerの既定のデータベースを削除してしまった場合の対応手順
※SQLサーバーにログインするユーザーも知らなかった場合
■ SQLサーバにアクセスした時、発生したエラー(Windows認証でログインした時、発生したエラー)
ユーザーの既定データベースを開けません。ログインに失敗しました。
ユーザー'インスタンス名¥ログインユーザー名'はログインできませんでした。(Microsoft SQL Server、エラー:4064)
■ 対応した手順
① コマンドプロンプトでsqlcmdで接続する。
sqlcmd -E -S (インスタンス名) -d master
② masterを使用するコマンドを入力する。
USE master
GO
③ 既定のデータベースが存在するかを確認するSQL
select name, dbname from sys.syslogins where name='(ログインユーザー)'
④ SQLサーバーにログインするユーザー作成
CREATE LOGIN [ユーザー名] WITH PASSWORD = 'パスワード',DEFAULT_DATABASE = [master]
⑤ 作成したユーザーに権限付与
EXEC master.sys.sp_addsrvrolemember 'ユーザー名', 'ロール'
※今回、DB作成できるようにするため、データベースを作成できるロールが最適
※大体のPJが「createdb」ロールの名前を指定している
⑥ SQLサーバーにて「Server認証」方式で接続する
このステップでは④で作成したアカウントでログインする
⑦ SQLサーバーにアクセスできたら、削除してしまった既定のデータベースを作成する
操作手順としてはGUIでSQLサーバーの画面を直接操作する。
⑧ とっておいたデータベースのバックアップがあったら、データベースの復元を行う
操作手順としてはGUIでSQLサーバーの画面を直接操作する。
全てが完了したら、SQLサーバーのタブを開き、Windows認証でアクセスできるか、試す。無事にアクセスできたら、成功である。
■参考になった記事
https://note.com/gotch59/n/n446b35e1d7eb
https://www.pine4.net/Memo/Article/Archives/114