SQLEXPRESS は「名前つきインスタンス」名

http://surferonwww.info/BlogEngine/post/2012/11/12/express-edition-uses-named-instance-by-defualt.aspx

えーっと、タイトルとはちと違うのだけれど、SQL Server 2008 R2で「MSSQLSERVER」というインスタンス名は、既定のインスタンス名として予約されているらしい。すなわち、「名前付きインスタンス」でインストールしたとしても、既定のインスタンスを使用してインストールしたものと見られる。

既定のインスタンスの利点としては、サーバ名のみでアクセスできるようになることがある。例えば、サーバ名:HOGEHOGE、インスタンス名:FUGAFUGA、の場合、HOGEHOGE\FUGAFUGAのような形でアクセスしに行くが、既定のインスタンス名「MSSQLSERVER」を使っていた場合、サーバ名HOGEHOGEだけを指定すれば、ID・PASSを入力してつなげることができる。

しかし、ここでハマった罠としては、既定のインスタンス(=MSSQLSERVER)を使用していると、「HOGEHOGE\MSSQLSERVER」という形では接続ができない、というものである。これは、名前付きインスタンスで明示的にMSSQLSERVERと名前を設定しても同様のことが起こる。アプリの仕様上、インスタンス名が接続に必須である場合、SQL Server側は必ず名前付きインスタンスで、かつMSSQLSERVER「以外」の名前を付ける必要がある。*1

*1:これで3時間ぐらいハマった。