this article describes a C# class that utilises ODBC (SQLBrowseConnect
) to obtain a list of SQL Servers on a network and returns an array of instances. If an instance is supplied with a valid username/password, then a list of all the databases on the instance is returned.
i needed a way to obtain a list of SQL Server instances without using SQLDMO. I found a C++ implementation of the SQLBrowseConnect
by Santosh Rao. This is a C# implementation. Further information can be found at:
in order for the code to work, ODBC must be installed on your machine. Nearly all Microsoft Operating Systems have this installed. I have only tested this on Windows 2000 and XP. In order to use this, add a reference to the sqlenumerator.cs file. The class is in the Moletrator.SQLDocumentor
namespace and is SQLInfoEnumerator
. The important work is done in the RetrieveInformation
method. This calls the relevant ODBC commands passing in the relevant values. The important item is the value of inputParam
. If this is blank then nothing is returned. When it contains a valid driver (DRIVER=SQL SERVER
for MS SQL Server), it will check for all instances of this driver on the network returning a string value which is then parsed.
if this string is expanded to include a valid SQL Server instance and a valid username/password, then a list of all the databases on the server instance is returned. If the username/password are not valid then the a list of SQL Server instances is returned:
EnumerateSQLServers
. The example below adds the list of SQL Servers to a list box SQLListBox
. SQLInfoEnumerator sie = new SQLInfoEnumerator();SQLListBox.Items.AddRange(sie.EnumerateSQLServers());
SQLInfoEnumerator sie = new SQLInfoEnumerator();sie.SQLServer = listboxSQLServerInstances.SelectedItem.ToString(); sie.Username = textboxUserName.Text;sie.Password = textboxPassword.Text;SQLListBox.Items.AddRange(sie.EnumerateSQLServersDatabases());
the demo code contains a full GUI with an example on how to call each of the above methods.
18 April 2005 1:00 p.m. - Initial write.
Click here to view Eamonn Murray''s online profile. |