normalian blog

Let's talk about Microsoft Azure, ASP.NET and Java!

SQL Server 2008 R2 運用時?のハマり所

当ブログを見た有識者MVP各位が SQL Serverサービスの実行ユーザについて で議論して下さっている。是非こちらを参照して欲しい/(^o^)\

Windows Azure Platformばかり弄っていると運用をMicrosoft側に完全委託するため、運用に関する厄介毎全般をお任せできることが大きなメリットだ。今回は、運用の知識を付けることをサボったために起きた問題への対処方法を紹介する。運用中のTeam Foundation Server 2010がインストールされているWindows Server 2008R2マシンが存在するが、こうした運用ノウハウはためておくに限るので公開させて頂く。何か突っ込み等有ればご指摘頂けると幸いだ。

発生した問題

Windows Serverマシンは暫く稼働しっぱなしにすると、パスワードの変更が求めらる*1。何も考えずにパスワードを更新すると、以下のエラーが発生する様になった。

分かる方はこのエラーを見ただけで推察可能だと思うのが、管理者のパスワードが変更されたため、Windows認証であるSQL Serverのログインが失敗しているのである。こちらの問題がに対処するため、「スタート - 管理ツール - サービス」を起動し、「SQL Server(XXXXXXXX)」を右クリックし「プロパティ」メニューを選択する。次に、「ログオン」タブを選択し、こちらのパスワードを新たに更新したパスワードに変更する。

こちらの問題は[http://support.microsoft.com/kb/282254/ja:title=Microsoft サポート > [PRB] ログオンの失敗により SQL Server サービスが開始されない]でも紹介されている。

続いて…

上記で MSSQLServerインスタンスは起動したが、SHAREPOINTインスタンスの起動に失敗し、以下のエラーメッセージが表示された。

initerrlog: エラー ログ ファイル '' を開けませんでした。オペレーティング システム エラー = 3(指定されたパスが見つかりません。)。

こちらについても調べたところ、SQL Server Error 17058 のページに原因が記載されていた。どうやら、SHAREPOINTインスタンスに紐づいたアカウントに対して、エラーログファイルを操作する権限が与えられていないらしい。
先ほどの問題に対応した手順と同様、「スタート - 管理ツール - サービス」を起動し、「SQL Server(XXXXXXXX)」を右クリックして「プロパティ」メニューを選択し、「ログオン」タブを選択しする。同ダイアログから「参照」ボタンを押下して管理者アカウントに変更する。
上記の手順を実施することで無事SQL Serverの各インスタンスが起動した。

だが…

とある SQL Azure MVPに伺ったところ、以下のご意見が。。。

  • @normalian: やっぱ SQL Server の認証は「手を抜いてWindows認証なんて使うな」ってことですかね('A`)
  • @SQLAzureJP: Windows認証とSQL Server認証では、マイクロソフトとしてはWindows認証を劇押ししている。SQL Server認証は下位互換の為に残していると言い放つぐらい。セキュリティ強度はWIndows認証>SQL Server認証。
  • @normalian: あー…、下手に管理者アカウントと紐づけてるからですおね…。 forums.techarena.in/software-devel… このエラーとか出て、エラーログのフォルダにアクセス権限ねぇだろ?的な文言あったので日和ました
  • @SQLAzureJP: Administratorと紐づけると、Server OSの場合でADとかあると、グループセキュリティポリシーでパスワードゆっこう期限が設定されちゃうので、都度SQL Serverも設定を変更しないといけなくなって大変ですw
  • @normalian: 大変でした&勉強になりました…(^q^) あざっす!
  • @SQLAzureJP: 本番環境じゃない開発環境であれば、Netowork Servicesとか、Domein~とかにしてしまえば楽ですがw

*1:パスワードを変更しない設定にすることもできる