Dustin,
I've had a look at the SetConnections() method, and by itself I can't see how it helps me do what I want.
I’ve used ConnectionManager.ShowAvailableConnectionStrings() to configure two alternative connection strings for our system using the ApplicationKey “TMS”.

All the programs that make up our system have the following code in AppMain.vb
Private Shared Sub SetDataSources()
ConnectionManager.ApplicationKey = "TMS"
ConnectionManager.ApplicationDefaultTitle = "TMS Database Connection"
ConnectionManager.ApplicationDefaultDescription = "This application connection is used by the Tannery Mangement System"
ConnectionManager.AddRequiredDataSourceItem("", "SQL Connection", _
DataSourceTypeOptions.SqlServer, "TMS201", "This connection is used by TMSSwapDBServer.")
ConnectionManager.SetConnections()
End Sub
We only have one DataSource for all users for all programs in the system, which runs on a single server through Terminal services sessions. We are not looking to selectively change bits and pieces, we want to change everything in a single hit. It is not a choice a user can make that they want to use a particular datasource, the whole system must be using the same datasource, and it is only ever changed by a supervisor under our instruction when the server running the database fails.
In a test program I’ve populated a textbox as follows
TextBox1.Text = ConnectionManager.GetApplicationActiveConnectionString("TMS", "")
What this shows me is the following Connection String regardless of the value of ApplicationDefaultDescription whether it is "TMS Database Connection", "TMS AppServer Database Connection", "TMS DataServer Database Connection", or "Mary had a little lamb".
Data Source=HAHNDORF;Initial Catalog=TMS201;Integrated Security=True;Persist Security Info=False;Asynchronous Processing=True
If I then run ConnectionManager.ShowAvailableConnectionStrings() again and select the other Connection as below:

Then I get the following Connection string for each of the values of ApplicationDefaultDescription described above.
Data Source=PGD-VISTA;Initial Catalog=TMS201;Integrated Security=True;Persist Security Info=False;Asynchronous Processing=True
This is pretty much what I want to happen (except that it gives the person performing the task too many choices) and I thought it was what the ShowAvailableConnectionStrings was for.
I know if I changed the ApplicationKey I would get a different Connection String, but that would mean storing that value somewhere central accessible by all the programs in the system, which I might have to do, but it would be far easier if I could press that “Select” button in code.
I hope this expands on what I'm trying to achieve to make it a bit more understandable. Am I misunderstanding something fundamental?
Peter