Answer

You can choose to let the installing user pick an SQL Server to connect to, from the available Microsoft SQL Servers on the network. Advanced Installer can automatically browse the network to discover any SQL Server (instances) online.

WizardLaunch the "Browse SQL Servers" wizard from the SQL toolbar and follow the instructions.

Add dialogAdd the Advanced Installer "SQLConnectionDlg" to the dialogs tree.

TipYou can use this functionality with any other dialog of your choice, or you can customize the Advanced Installer built-in dialog.

Browse Result (output)

Advanced Installer dumps the result of the browse operation (the SQL Servers list) in the following locations:

  • Any ComboBox control that has the property SqlServerBrowseComboBox associated with it.
  • Any ListBox control that has the property SqlServerBrowseListBox associated with it.
  • Advanced Installer "SQLConnectionDlg": you can replace the Edit control (ServerEdit) with a ComboBox control that has the same SERVER_PROP property attached to it.
  • A flat, comma separated list of SQL Servers (names only) will be dumped into the SqlServerBrowseOutput property. You can use this value if you wish to do any custom processing of the servers list.

For ComboBox and ListBox controls, the output format will be as follows:

  • Item text: ServerName (Server's Description) - when using Windows Network Manager API or ServerName\InstanceName;Clustered:No;Version:9.00.3042.00 - when using ODBC Driver Manager (The item text could be reduced to just the server name, if the remote machine did not provide any additional information.)
  • Item value: ServerName (always)

Browse Method

Advanced Installer supports two methods for listing the SQL Servers from a network:

  • Enumerate SQL Servers in the primary domain using Windows Network Manager API (NetServerEnum).
  • Enumerate SQL Server instances on the network using the ODBC Driver Manager (SQLBrowseConnect).

The browse method is stored in the SqlServerBrowseMethod property according to these values:

  • 1 - Windows Network Manager API
  • 2 - ODBC Driver Manager

ImportantODBC Driver Manager enumerates SQL Server instances using a network broadcast (UDP port 1434). This means it will not always be able to return a conclusive or complete list of SQL Server instances because:

  • UDP port 1434 might be blocked by a firewall;
  • Instances that are not up and running do not respond to the discovery broadcast;
  • Instances might respond after the timeout, which will exclude there response from the list;
  • Instances might not be listening on the correct protocol, so will never receive the discovery broadcast;
  • The HideInstance flag might be set for some instances;
  • Network infrastructure, especially routers, might limit the effect/visibility of the broadcast, since most routers are configured not to relay broadcast requests to the other side of the router;

NoteHowever, browsing the network using ODBC Driver Manager functionality can return more information about servers that have SQL Server Browser service running. For example:

ServerName\InstanceName;Clustered:No;Version:9.00.3042.00

NoteYou can also suppress the "Please Wait..." message box showed by the SQL Server browse operation.

Connection Timeout

You can specify a connection timeout (in seconds) for the browse operation. The default is 60 seconds and the timeout value is stored in the SqlConnectionTimeout property.

NoteA "Connection Timeout" can be set only when using ODBC Driver Manager to browse the network, and has no effect when enumerating SQL Servers with Windows Network Manager API.