枚举 SQL Server 的实例

     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 的行为没有影响。

Note注意

硬件或软件可能会限制 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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值