65.9K
CodeProject 正在变化。 阅读更多。
Home

C# 中使用 ODBC 枚举 SQL Server 实例

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.90/5 (28投票s)

2005年4月19日

CPOL

2分钟阅读

viewsIcon

315458

downloadIcon

11811

一篇关于在 C# 中使用 ODBC 枚举 SQL Server 实例的文章,从而消除对 SQLDMO 的任何依赖。 基于 Santosh Rao 的 C++ 文章。

Sample Image - C#SQLInfoEnumeratorDemo.jpg

引言

本文介绍了一个 C# 类,该类利用 ODBC (SQLBrowseConnect) 获取网络上 SQL Server 的列表并返回一个实例数组。 如果为实例提供了有效的用户名/密码,则会返回实例上所有数据库的列表。

背景

我需要一种无需使用 SQLDMO 即可获取 SQL Server 实例列表的方法。 我找到了 Santosh Rao 的 SQLBrowseConnect 的 C++ 实现。 这是 C# 实现。

使用代码

为了使代码能够工作,必须在您的机器上安装 ODBC。 几乎所有的 Microsoft 操作系统都安装了它。 我只在 Windows 2000 和 XP 上测试过。 为了使用它,请添加对 SQLEnumerator.cs 文件的引用。 该类位于 Moletrator.SQLDocumentor 命名空间中,并且是 SQLInfoEnumerator。 重要的工作是在 RetrieveInformation 方法中完成的。 这会调用相关的 ODBC 命令,并传入相关的值。 重要的是 inputParam 的值。 如果此值为空,则不会返回任何内容。 当它包含有效的驱动程序(MS SQL Server 的 DRIVER=SQL SERVER)时,它将检查网络上此驱动程序的所有实例,返回一个字符串值,然后对其进行解析。

如果将此字符串扩展为包含有效的 SQL Server 实例和有效的用户名/密码,则会返回服务器实例上所有数据库的列表。 如果用户名/密码无效,则会返回 SQL Server 实例的列表

  1. 为了获得 SQL Server 实例的列表,请创建该类的一个实例并调用 EnumerateSQLServers。 下面的示例将 SQL Server 列表添加到列表框 SQLListBox
    SQLInfoEnumerator sie = new SQLInfoEnumerator();
    SQLListBox.Items.AddRange(sie.EnumerateSQLServers());
  2. 要获取 SQL Server 实例上的数据库列表,请使用下面的代码。 SQL Server 实例是样本 A 中填充的列表框中选择的实例。 用户输入用户名/密码。
    SQLInfoEnumerator sie = new SQLInfoEnumerator();
    sie.SQLServer = listboxSQLServerInstances.SelectedItem.ToString(); 
    sie.Username = textboxUserName.Text;
    sie.Password = textboxPassword.Text;
    SQLListBox.Items.AddRange(sie.EnumerateSQLServersDatabases());

演示代码包含一个完整的 GUI,其中包含有关如何调用上述每个方法的示例。

历史

2005 年 4 月 18 日下午 1:00 - 首次编写。

© . All rights reserved.