Randy,
As to how to change connections, it seems to me that you have all the BOs you need, i.e. the data on the server and the data locally will both use the same schema, just on different servers (one local, one on a server somewhere). If this is the case, all you'd have to do is create a server datasource, and then instantiate your existing BOs using this new datasource. You could then have one instance of a BO connected to the local data and one to the server.
In AppMain, in SetDataSources, you'd define a data source for the server and for the local sql server express
' Datasource for local access, with default blank key (you already have this one defined no doubt)
DataLayer.DataSources.Add(New SqlDataSourceItem("","Data Source=(local);...")
' Datasource for server access, with special server key
DataLayer.DataSources.Add(New SqlDataSourceItem("server","Data Source=MyServer;..."
When you need access to the server data, you'd just create a BO that uses the server key. You could of course also do this via property setting, if the BO is on a form or component. To contrast, you could also have another instance of the same BO, connected locally too.
' Server BO
Dim serverBO as New MyBO()
' Connect BO to the server data
ServerBO.DataSourceKey = "server"
' Fill as needed
ServerBO.FillTop100()
' Local BO, already connected locally
Dim localBO as New MyBO()
' Move data from server to local
localBO.MoveData(ServerBO)
The MoveData() method would be a custom method that does whatever needs to be done to move the data and is just an example to show that you could have to instances of the same BO, connected to different servers.
I don't know if this is what you'd need, but hopefully it sparks some ideas.