by WebSurfer
2012年11月17日 09:47
SQL Server の「既定のインスタンス」のインスタンス名は何でしょうか?
下の画像を見てください。「既定のインスタンス」としてインストールした SQL Server 2005 Developer Edition のインスタンス名を Transact-SQL の SERVERPROPERTY 関数で取得した結果です。結果は MSSQLSERVER ではなく NULL になります。
MSDN ライブラリ SERVERPROPERTY (Transact-SQL) によると、既定インスタンスの場合 NULL になるそうです。上の画像の通りですね。つまり「既定のインスタンス」には名前はないということのようです。
ちなみに、デフォルト設定でインストールした Express 版(「名前付きインスタンス」になる)で同様にインスタンス名を取得すると、結果は期待したとおり SQLEXPRESS になります。
SQL Server Management Studio で調べることもできます。[オブジェクトエクスプローラー]⇒[サーバーのプロパティ]⇒[接続のプロパティ]と進んで、その画面の「インスタンス名」欄を見ると、既定のインスタンスの場合は以下の画像のように空白になっているはずです。
という訳で、実験では、「既定のインスタンス」には名前はないという結果になりました。
ところが、それを裏付ける文書が見つかりません。唯一見つけたのが、MSDN ライブラリ 名前付きインスタンスの使用 で、"インスタンスには、既定のインスタンス (名前が指定されていないインスタンス) と名前付きインスタンスがあります。"(英文では "An instance is either the default, unnamed instance, or it is a named instance. ")と書いてあります。
逆に、「既定のインスタンス」のインスタンス名は MSSQLSERVER という記述はいたるところで目にします。例えば、MSDN ライブラリ インスタンスの構成 には "既定のインスタンス名は MSSQLSERVER です。"(英文では "The default instance name is MSSQLSERVER.")とはっきり書いてあったりします。
多数決(笑)だと、後者(名前は MSSQLSERVER)に軍配が上がるようですが、実際どっちが本当なんでしょう?
自分は前者(名前はない)が正しく、MSSQLSERVER というのはサービス名であって、インスタンス名ではないと勝手に思っています。
----- 2012/11/18 追記 -----
試しに「既定のインスタンス」にインスタンス名 MSSQLSERVER を指定して接続にトライしてみました。"接続文字列が有効ではありません [87]" というエラーメッセージが出て接続に失敗します。
左のサムネイル画像をクリックすると原寸大の画像が表示されますので、エラーメッセージの詳細などはそれを見てください。
原寸大の画像の上のほうに示されているように、コンピュータ名 (papiko-pc) のみを指定した場合は接続に成功します。
という訳で、やはり「既定のインスタンス」にはインスタンス名はないのではと思います。