SQL Server 2000 和 SQL Server 2005 均允许应用程序在当前的网络中查找 SQL Server 实例。SqlDataSourceEnumerator 类向应用程序开发人员公开此信息,提供包含所有可见服务器的信息的 DataTable。此返回的表包含网络上可用服务器实例的列表(该列表与用户尝试创建新连接时提供的列表匹配),并展开“连接属性”对话框上包含所有可用服务器的下拉列表。显示的结果并非总是完整的。
要检索包含可用 SQL Server 实例信息的表,必须先使用共享/静态 Instance 属性检索枚举器:
Dim instance As System.Data.Sql.SqlDatSourceEnumerator = _
System.Data.Sql.SqlDataSourceEnumerator.Instance
通过方法调用返回的表包含以下列,所有列均包含 string 值:
列 | 说明 |
---|---|
ServerName | 服务器的名称。 |
InstanceName | 服务器实例的名称。如果服务器作为默认实例运行,则为空白。 |
IsClustered | 指示服务器是否属于群集。 |
Version | 服务器的版本(对于 SQL Server 2000,为 8.00.x,对于 SQL Server 2005,为 9.00.x)。 |
枚举限制
所有可用服务器可能会列出,也可能不会列出。根据超时和网络通信量等因素,列表可能会有所不同。这可能会使两个连续调用生成不同的列表。只会列出相同网络上的服务器。广播包通常不会遍历路由器,这也就是可能会看不到某个服务器列出的原因,但是在各个调用之间是稳定的。
列出的服务器可能包含其他信息,也可能不包含其他信息,例如 IsClustered 和版本。这取决于获取列表的方式。通过 SQL Server 浏览器服务列出的服务器将比通过 Windows 基础结构发现的服务器更加详细,后者只会列出名称。
注意 |
---|
只有以完全信任模式运行时,才可以使用服务器枚举。在部分信任的环境中运行的程序集将无法使用服务器枚举,即使这些程序集具有 SqlClientPermission 代码访问安全性 (CAS) 权限。 |
SQL Server 2000 在内部为 SqlDataSourceEnumerator 提供信息。但是,SQL Server 2005 通过使用名为 SQL 浏览器的外部 Windows 服务提供信息。默认情况下启用此服务,但是管理员可以关闭或禁用此服务,使服务器实例对此类是不可见的。此服务仅适用于 SQL Server 2005,对 SQL Server 2000 的行为没有影响。
注意 |
---|
硬件或软件可能会限制 SQL Server 实例的浏览能力。有关打开端口进行浏览的更多信息,请参见知识库文章“How to use a script to programmatically open ports for SQL Server to use on systems that are running Windows XP Service Pack 2”。 |
示例:以下控制台应用程序检索所有可见 SQL Server 实例的信息并在控制台窗口中显示该信息。
Imports System.Data.Sql Module Module1 Sub Main() ' Retrieve the enumerator instance and then the data. Dim instance As SqlDataSourceEnumerator = _ SqlDataSourceEnumerator.Instance Dim table As System.Data.DataTable = instance.GetDataSources() ' Display the contents of the table. DisplayData(table) Console.WriteLine("Press any key to continue.") Console.ReadKey() End Sub Private Sub DisplayData(ByVal table As DataTable) For Each row As DataRow In table.Rows For Each col As DataColumn In table.Columns Console.WriteLine("{0} = {1}", col.ColumnName, row(col)) Next Console.WriteLine("============================") Next End Sub End Module