'' is not a valid login or you do not have permission.対策

サイレントインストールでユーザのマシンにSQL Server 2008 R2 Express をインストールしているのですが、一部のPCでインストールに失敗するという事象が報告されてきていました。ログを見ると

'' is not a valid login or you do not have permission.

というエラーが出ているので、さっそくぐぐってみると、どうも「コンピュータ名とSQLサーバへのログイン権限を与えようとしているユーザ名が同名の場合に発生する」らしいです。


http://serverfault.com/questions/119875/is-not-a-valid-login-or-you-do-not-have-permission-on-sql-server-installatio


など、たくさんのところで同じことではまっている人が居ます。こんなのSQL Serverインストーラのバグじゃないのか、と思うのですが、とにかくそうなっている模様。PC名を変更すれば回避できることを確認しました。今回のケースではユーザにPC名を変えてくれ、というわけにもいかず、かといって別ユーザだと意味がないので、どうしたらいいのか……。


サイレントインストール時のオプションで、ADDCURRENTUSERASSQLADMIN="True"を指定しているからこうなっているのか? NETWORK SERVICEアカウントに権限が与えられれば、インストールユーザに与えなくても大丈夫なのかなあ。なんらかのSQLメンテナンスを伴う機能をリリースしたいときにログインユーザに権限がないことが後々問題にならないだろうなという心配もある……。困ったな。


これってConnectに登録されてないのかな。探してみる。

2011/4/7 追記

Connectにあった。これは「Windows issue.」なので、「修正しない」。えー。ちなみにWindowsの問題として、こんな理由が書かれています。うーん。ユーザ名をコンピュータ名にしようとしてエラーが出るなら、コンピュータ名の方を変更するときにもエラーを出すべきでは? 設定できるのに、特定のソフトウェアをインストールするときになって初めて不具合に気がつく、というのは問題な気がするが……

Administratorを設定することで回避できるというポストがあった。たしかにこれであればうまくいく。Administratorが無効だったりパスワードが設定されてなかったりすることに対応しないといけないけど……

そもそも、このエラーが起きたときに不完全な状態でSQLサーバがインストールされるのも問題だと思う。エラーなら、インストール全体をキャンセルして欲しい。