C# 中使用 ODBC 枚举 SQL Server 实例
一篇关于在 C# 中使用 ODBC 枚举 SQL Server 实例的文章,从而消除对 SQLDMO 的任何依赖。 基于 Santosh Rao 的 C++ 文章。
引言
本文介绍了一个 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 实例的列表
- 为了获得 SQL Server 实例的列表,请创建该类的一个实例并调用
EnumerateSQLServers
。 下面的示例将 SQL Server 列表添加到列表框SQLListBox
。SQLInfoEnumerator sie = new SQLInfoEnumerator(); SQLListBox.Items.AddRange(sie.EnumerateSQLServers());
- 要获取 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 - 首次编写。