什么是命名和默认实例?

什么是命名和默认实例? 他们有什么区别? 他们为什么使用?

根据微软关于命名与默认

客户端应用程序连接到Microsoft SQL Server 2005的实例以使用SQL Server数据库。 每个SQL Server实例都由一组可以具有唯一设置的不同服务组成。 目录结构,registry结构和服务名称都反映了您在安装期间识别的特定实例名称。

一个实例是默认的,未命名的实例,或者它是一个命名实例。 当SQL Server 2005安装在默认实例中时,它不需要客户端指定实例的名称来build立连接。 客户端只需要知道服务器名称。

指定的实例由计算机的networking名称加上在安装期间指定的实例名称标识。 连接时,客户端必须指定服务器名称和实例名称。

默认情况下,除非指定实例名称,否则SQL Server将安装在默认实例中。 但是,SQL Server Express始终安装在命名实例中,除非在安装过程中强制执行默认安装。

您也可以只安装一个默认(无名实例),但可以安装多个命名实例。

许多第三方软件通常会使用一个默认的命名实例,尽pipe他们可能没有提及它。 原因很明显,从上面的答案可以看出,标准版默认安装了一个未命名的实例,而Express版本安装了一个已命名的实例。

从这个angular度来看,了解这个差异很重要,因为如果您有2或3个数据库服务器在运行,您可能永远不会连接到正确的版本。 因为第三方软件正在查找默认实例,而您正在考虑它正在尝试连接到的SQLEXPRESS实例。 如果您不知道如何连接到命名的vs未命名的实例,它可以显着增加您的疑难解答时间。

所以,如果你想连接到命名或未命名的版本,使用以下指导原则。

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

请注意,即使默认实例具有名称,也不能通过其名称来引用它!

除了Brett G发布的解释之外,还有一些为什么要使用它们的原因:

  • 您可以使用不同版本的SQL的不同实例(即,使用SQL 2008的默认值,使用SQL 2005的命名实例)
  • 分离问题,无论是你的应用程序或安全或任何东西
  • 不同的开发环境
  • 不同的应用程序环境(即本土与第三方)

各种各样的理由使用它们。 但这并不意味着它总是一个好主意:P

还有一个实际的区别:SQL2005和以上允许你安装每个系统16个或更多的实例。 由于授权是每个物理CPU ,因此每安装一次SQL服务器(而不是每个实例!),这意味着您最多可以运行16个SQL Server 2005实例,而不会比以前多花一分钱。

鉴于CPU许可证可以运行到每插槽15000美元(!),这是一个必需具有16核心和256GB内存的大型安装。

您还可以限制内存并为每个实例分配限制处理器使用量。 您还可以为供应商编写的应用程序创build一个“需要”系统pipe理员权限的实例,这样就不会让其他应用程序处于危险之中。

其中一个最好的原因是数据库的分离。 如果您正在开发自己的应用程序并打包SQL Express,那么将其安装到自己的实例中是有意义的。 另外给用户select指定一个现有的SQL安装,如果他们认为。

如果你有一个数据库是关键的,你想确保没有其他人可以访问,它可以进入它自己的实例与一个非常有限的安全授权。 说这是你的prodcution数据库,然后它复制到同一服务器上的报告数据库**只读的人。 尽pipe用户(pipe理员)错误使用户意外访问生产数据库的可能性较小,但只能将实际能够将生产实例上的安全组更新为只有less数几个人。

**好的做法是让报告服务器成为一个单独的机器,但我只是以此为例。