web-dev-qa-db-ja.com

SQL Server:名前付きインスタンスとデフォルトインスタンスとは何ですか?

名前付きインスタンスとデフォルトインスタンスとは何ですか?それらの違いは何ですか?なぜ使用されているのですか?

37

名前付きvsデフォルトについてのMicrosoftによると

クライアントアプリケーションは、Microsoft SQL Server 2005のインスタンスに接続して、SQL Serverデータベースを操作します。各SQL Serverインスタンスは、固有の設定を持つことができるサービスの異なるセットで構成されています。ディレクトリ構造、レジストリ構造、およびサービス名はすべて、セットアップ中に特定した特定のインスタンス名を反映しています。

インスタンスは、デフォルトの名前のないインスタンスであるか、名前付きインスタンスです。 SQL Server 2005がデフォルトのインスタンスにインストールされている場合、接続を確立するためにクライアントがインスタンスの名前を指定する必要はありません。クライアントはサーバー名を知っていれば十分です。

名前付きインスタンスは、コンピューターのネットワーク名と、インストール中に指定したインスタンス名で識別されます。クライアントは、接続時にサーバー名とインスタンス名の両方を指定する必要があります。

デフォルトでは、インスタンス名を指定しない限り、SQL Serverはデフォルトのインスタンスにインストールされます。ただし、SQL Server Expressは、セットアップ中にデフォルトのインストールを強制しない限り、常に名前付きインスタンスにインストールされます。

32
Brett G

また、インストールできるデフォルト(名前なしインスタンス)は1つだけですが、名前付きインスタンスを多数インストールできます。

彼らはそれを言及しないかもしれませんが、多くのサードパーティソフトウェアは通常、デフォルトの名前付きインスタンスを使用します。理由は上記の回答から明らかです。標準バージョンではデフォルトで名前なしインスタンスがインストールされますが、エクスプレスバージョンではデフォルトで名前付きインスタンスがインストールされます。

2つまたは3つのDBサーバーを実行している場合、適切なバージョンに接続できない可能性があるため、この観点からの違いについて知っておくことが重要です。サードパーティソフトウェアは、接続しようとしているSQLEXPRESSインスタンスであると思っているときに、デフォルトのインスタンスを探しているためです。名前付きインスタンスと名前なしインスタンスに接続する方法がわからない場合は、トラブルシューティングにかかる​​時間が大幅に増える可能性があります。

したがって、名前付きまたは名前なしのバージョンに接続する場合は、次のガイドラインを使用してください。

MY-MACHINE-NAME\SQLEXPRESS  /* named version - correct */
MY-MACHINE-NAME             /* unnamed version (default instance) - correct */
MY-MACHINE-NAME\MSSQLSERVER /* unnamed version (default instance) - Wrong */

デフォルトのインスタンスには名前がありますが、その名前で参照することはできません。

18
Savage Garden

Brett Gが投稿した説明に加えて、それらを使用する理由をいくつか以下に示します。

  • 異なるバージョンのSQLを使用して異なるインスタンスを持つことができます(つまり、SQL 2008を使用するデフォルト、SQL 2005を使用する名前付きインスタンス)
  • 懸念の分離、それはあなたのアプリやセキュリティなどの何かであるか
  • 異なる開発環境
  • 異なるアプリ環境(つまり、自社開発とサードパーティ)

それらを使用するあらゆる種類の理由。ただし、常に良いアイデアであるとは限りません。

5
squillman

さらに別の実用的な違い:SQL2005以降では、システムごとに16以上のインスタンスをインストールできます。ライセンスは物理CPUごと、SQLサーバーのインストールごと(そしてnotインスタンスごと!)なので、これはSQL Server 2005の最大16個のインスタンスを、以前よりも1セントも支払わずに使用できます。

CPUライセンスはソケットあたり15000ドル(!)まで実行できることを考えると、これは、たとえば16コアと256GBのメモリを備えた大規模なインストールではなくてはならないものです。

5
adaptr

また、メモリに上限を設定し、インスタンスごとのプロセッサ使用制限を割り当てることもできます。また、システム管理者権限を「必要とする」ベンダーが作成したアプリのインスタンスを作成して、他のアプリケーションを危険にさらさないようにすることもできます。

1
Sam

最良の理由の1つは、データベースの分離です。独自のアプリケーションを開発し、それを使用してSQL Expressをパッケージ化する場合は、独自のインスタンスにインストールするのが理にかなっています。さらに、既存のSQLインストールを指定するオプションをユーザーに提供します。

他のユーザーがアクセスできないようにする必要がある重要なデータベースがある場合、そのデータベースは、非常に制限されたセキュリティ認証で独自のインスタンスにアクセスできます。それがあなたの製品DBであるとすると、同じサーバー上のレポートDBに複製されます**。ユーザー(管理者)エラーが発生しても、本番インスタンスのセキュリティグループを実際に更新できるユーザーを数人に制限することにより、ユーザーが誤って本番DBにアクセスする可能性は低くなります。

**良い習慣は、レポートサーバーを別のマシンにすることですが、私はこれを例として使用しています。

0
SpaceManSpiff