处理多个实例
尽管多个 Microsoft® SQL Server™ 2000 实例可在单台计算机上运行,但实例间没有直接连接。每个实例以多种方式运行,就像位于单独的服务器上。连接某一实例的应用程序除了通过分布式查询外,不能访问其它实例中创建的数据库中的对象。实例之间不能共享数据库和数据库文件。SQL Server 2000 数据库引擎的命名实例与默认实例的行为几乎相同。两者的主要差别是命名实例要求用户必须提供标识命名实例的计算机名和实例名。如果仅指定 computername,则使用默认实例。如果指定 computername\instancename,则使用命名实例。 服务管理器。 
如果在服务管理器中仅指定 computername,则可停止和启动默认实例。如果指定 computername\instancename,则可停止和启动命名实例。当启动特定的实例时,对于任何使用具有访问数据库权限的授权 ID 连接实例的应用程序,都可使用在该实例中创建的所有数据库。SQL Server 企业管理器。 
通过 SQL Server 企业管理器,用户可以注册自己拥有权限的任何一个实例。在注册实例后,可根据授予的权限,创建、编辑和除去数据库中与实例相关联的对象。还可为该实例创建、编辑和除去数据转换服务、复制和 SQL Server 代理对象。应用程序。 
在一个应用程序中,如果在连接请求中指定 computername 作为服务器名参数,则连接计算机上的默认实例。用户可访问自己拥有访问权限的默认实例中的任何数据库。如果指定 computername\instancename 作为服务器名称参数,则连接命名实例。用户可访问自己拥有访问权限的命名实例中的任何数据库。当连接特定的实例时,只能通过分布式查询访问其它实例中的数据库对象,正如只能通过分布式查询访问其它服务器中的数据库对象一样。应用程序指定实例名的方式各不相同:ADO 应用程序在提供程序字符串中指定 "Server=computername\instancename"。有关更多信息,请参见连接多个 SQL Server 实例。
OLE DB 应用程序在提供程序字符串中指定 "Server=computername\instancename"。也可将 DBPROP_INIT_DATASOURCE 设置为 computername\\instancename(反斜杠必须通过另一个反斜杠转义)。有关更多信息,请参见建立与数据源的连接。
ODBC 应用程序在 SQLDriverConnect 上指定的连接字符串中指定 "Server=computername\instancename"。也可为 SQLConnect 上的参数 ServerName 指定 computername\\instancename,或通过已为服务器名称指定 computername\instancename 的数据源进行连接。有关更多信息,请参见 SQLDriverConnect 和 SQLConfigDataSource 支持。
SQL DMO 应用程序可使用 SQLServer2 对象管理 SQL Server 2000 实例。有关更多信息,请参见 SQLServer2 对象。
DB-Library 和用于 C 语言的嵌入式 SQL 不支持多个实例。 
分布式查询和链接服务器。 
分布式查询和链接服务器定义使用 computername\instancename 和 computername 分别标识命名实例和默认实例。有关更多信息,请参见多个 SQL Server 实例上的分布式查询。命令提示实用工具。 
使用命令提示实用工具时,可通过 computername\instancename 使用服务器开关指定实例,例如:osql -E -Scomputer1\instance1
sqlservr /Sinstance1isql 实用工具不支持命名实例。SQL Server 2000 客户端组件。 
使用 SQL Server 2000 客户端组件的应用程序可枚举用于连接的实例:用于 SQL Server 2000 的 OLE DB 提供程序使用 ISourcesRowset::GetSourcesRowset 返回实例名。命名实例名作为格式为 computername\instancename 的数据源名返回,其中的 computername 可以是单台计算机的名称,也可以是故障转移群集的虚拟服务器名称。默认实例名作为格式为 computername 的数据源名返回,不带实例名。
SQL Server 2000 ODBC 驱动程序支持 SQLBrowseConnect 和 SQLSetConnectAttr 的扩展,这使应用程序得以枚举服务器上的实例。ODBC 应用程序还可确定 computername 是单个计算机名还是故障转移群集的虚拟服务器名。有关更多信息,请参见 SQLBrowseConnect。
SQL-DMO 应用程序可使用 SQLServer2 对象枚举实例。SQLServer2 对象还提供诸如 SQL Server 名和实例的 SQL Server 代理服务名,以及实例是在单个计算机上运行还是在故障转移群集上运行等方面的信息。有关更多信息,请参见 SQLServer2 对象。
DB-Library 和用于 C 语言的嵌入式 SQL 不支持命名实例。 
标识实例
性能监视器计数器、事件探查器事件和事件查看器应用程序日志中的 Windows 事件都标识与它们相关联的 SQL Server 实例。如果连接命名实例,则 @@SERVERNAME 函数返回的字符串以 servername\instancename 的格式标识实例名。如果连接默认实例,则 @@SERVERNAME 仅返回 servername。有关更多信息,请参见 @@SERVERNAME。SERVERPROPERTY 函数的 INSTANCENAME 属性报告所连接实例的实例名。如果连接默认实例,则 INSTANCENAME 返回 NULL。另外,SERVERNAME 属性将返回与 @@SERVERNAME 返回的格式相同的字符串,并在连接命名实例时具有格式 servername\instancename。有关更多信息,请参见 SERVERPROPERTY。尽管 @@SERVERNAME 和 SERVERNAME 报告的字符串采用相同的格式,但它们报告的信息可以不同,例如: @@SERVERNAME 返回的字符串受 sp_addserver 和 sp_dropserver 操作的影响,而 SERVERNAME 报告的字符串则不受影响。
SERVERNAME 可自动报告计算机网络名中的更改,而 @@SERVERNAME 不报告这些更改,除非使用 sp_dropserver 和 sp_addserver 更改它报告的名称。 
©1988-2000 Microsoft Corporation。保留所有权利。