在现代的数据库管理中,经常需要获取网络中SQL服务器实例的列表,以及这些实例上的数据库列表。本文将介绍如何使用ODBC和C#编程语言来实现这一功能。
在不使用SQLDMO的情况下,需要一种方法来获取SQL服务器实例的列表。找到了一个C++实现的SQLBrowseConnect,这是它的C#版本实现。
为了让代码工作,机器上必须安装了ODBC。几乎所有的Microsoft操作系统都预装了这个组件。只在Windows 2000和XP上测试过。要使用这个功能,需要添加对SQLEnumerator.cs文件的引用。类位于Moletrator.SQLDocumentor命名空间中,名为SQLInfoEnumerator。重要的工作在RetrieveInformation方法中完成。这个方法调用相关的ODBC命令并传递相应的值。重要的是inputParam的值。如果这个值为空,则不会返回任何内容。当它包含一个有效的驱动程序(例如,对于MS SQL Server是DRIVER=SQL SERVER)时,它将检查网络上此驱动程序的所有实例,并返回一个字符串值,然后进行解析。
如果这个字符串被扩展以包含一个有效的SQL服务器实例和一个有效的用户名/密码,那么就会返回服务器实例上的所有数据库列表。如果用户名/密码无效,则返回SQL服务器实例列表。
要获取SQL服务器实例的列表,请创建类的实例并调用EnumerateSQLServers方法。下面的示例将SQL服务器的列表添加到名为SQLListBox的列表框中。
C#
SQLInfoEnumerator sie = new SQLInfoEnumerator();
SQLListBox.Items.AddRange(sie.EnumerateSQLServers());
要获取SQL服务器实例上的数据库列表,请使用以下代码。SQL服务器实例是从列表框中选择的实例,用户名/密码由用户输入。
C#
SQLInfoEnumerator sie = new SQLInfoEnumerator();
sie.SQLServer = listboxSQLServerInstances.SelectedItem.ToString();
sie.Username = textboxUserName.Text;
sie.Password = textboxPassword.Text;
SQLListBox.Items.AddRange(sie.EnumerateSQLServersDatabases());