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
///