diff --git a/src/Microsoft.SqlTools.ServiceLayer/Connection/ConnectionService.cs b/src/Microsoft.SqlTools.ServiceLayer/Connection/ConnectionService.cs index 6eca00dd..7cdbafc3 100644 --- a/src/Microsoft.SqlTools.ServiceLayer/Connection/ConnectionService.cs +++ b/src/Microsoft.SqlTools.ServiceLayer/Connection/ConnectionService.cs @@ -506,7 +506,10 @@ namespace Microsoft.SqlTools.ServiceLayer.Connection { try { - info.SqlConnection.ChangeDatabase(newDatabaseName); + if (info.SqlConnection.State == ConnectionState.Open) + { + info.SqlConnection.ChangeDatabase(newDatabaseName); + } info.ConnectionDetails.DatabaseName = newDatabaseName; // Fire a connection changed event diff --git a/src/Microsoft.SqlTools.ServiceLayer/QueryExecution/Query.cs b/src/Microsoft.SqlTools.ServiceLayer/QueryExecution/Query.cs index 02bff4d3..d5ce270d 100644 --- a/src/Microsoft.SqlTools.ServiceLayer/QueryExecution/Query.cs +++ b/src/Microsoft.SqlTools.ServiceLayer/QueryExecution/Query.cs @@ -21,6 +21,15 @@ namespace Microsoft.SqlTools.ServiceLayer.QueryExecution /// public class Query : IDisposable { + #region Constants + + /// + /// "Error" code produced by SQL Server when the database context (name) for a connection changes. + /// + private const int DatabaseContextChangeErrorNumber = 5701; + + #endregion + #region Properties /// @@ -146,10 +155,10 @@ namespace Microsoft.SqlTools.ServiceLayer.QueryExecution { await conn.OpenAsync(); - if (conn.GetType() == typeof(SqlConnection)) + SqlConnection sqlConn = conn as SqlConnection; + if (sqlConn != null) { // Subscribe to database informational messages - SqlConnection sqlConn = conn as SqlConnection; sqlConn.InfoMessage += OnInfoMessage; } @@ -161,11 +170,6 @@ namespace Microsoft.SqlTools.ServiceLayer.QueryExecution } } - /// - /// "Error" code produced by SQL Server when the database context (name) for a connection changes. - /// - private const int DatabaseContextChangeErrorNumber = 5701; - /// /// Handler for database messages during query execution ///