Revert "Scripting should await result of requestcontext.sendresult in case it errors" (#526)

* Revert "Add rowcount check so that no results error is sent for a query where no rows are returned (#525)"

This reverts commit 3392f93a2e.

* Revert "Add unknown status for DB Nodes whose status is not known (#524)"

This reverts commit 3d7b87eca2.

* Revert "Should await result of requestcontext.sendresult in case it errors (#520)"

This reverts commit caf196ea31.
This commit is contained in:
Karl Burtram
2017-10-25 13:34:45 -07:00
committed by GitHub
parent 3392f93a2e
commit 4d04bff810
6 changed files with 43 additions and 130 deletions

View File

@@ -2405,14 +2405,6 @@ namespace Microsoft.SqlTools.ServiceLayer
} }
} }
public static string ScriptingUnexpectedError
{
get
{
return Keys.GetString(Keys.ScriptingUnexpectedError);
}
}
public static string unavailable public static string unavailable
{ {
get get
@@ -4608,9 +4600,6 @@ namespace Microsoft.SqlTools.ServiceLayer
public const string ScriptingListObjectsCompleteParams_ConnectionString_Property_Invalid = "ScriptingListObjectsCompleteParams_ConnectionString_Property_Invalid"; public const string ScriptingListObjectsCompleteParams_ConnectionString_Property_Invalid = "ScriptingListObjectsCompleteParams_ConnectionString_Property_Invalid";
public const string ScriptingUnexpectedError = "ScriptingUnexpectedError";
public const string unavailable = "unavailable"; public const string unavailable = "unavailable";

View File

@@ -1380,10 +1380,6 @@
<value>Error parsing ScriptingListObjectsCompleteParams.ConnectionString property.</value> <value>Error parsing ScriptingListObjectsCompleteParams.ConnectionString property.</value>
<comment></comment> <comment></comment>
</data> </data>
<data name="ScriptingUnexpectedError" xml:space="preserve">
<value>Unexpected error while scripting: no result returned from script operation.</value>
<comment></comment>
</data>
<data name="unavailable" xml:space="preserve"> <data name="unavailable" xml:space="preserve">
<value>Unavailable</value> <value>Unavailable</value>
<comment></comment> <comment></comment>

View File

@@ -690,8 +690,6 @@ ScriptingParams_FilePath_Property_Invalid = Invalid directory specified by the S
ScriptingListObjectsCompleteParams_ConnectionString_Property_Invalid = Error parsing ScriptingListObjectsCompleteParams.ConnectionString property. ScriptingListObjectsCompleteParams_ConnectionString_Property_Invalid = Error parsing ScriptingListObjectsCompleteParams.ConnectionString property.
ScriptingUnexpectedError = Unexpected error while scripting: no result returned from script operation.

View File

@@ -2311,11 +2311,6 @@
<note>. <note>.
Parameters: 0 - value (string), 1 - columnType (string) </note> Parameters: 0 - value (string), 1 - columnType (string) </note>
</trans-unit> </trans-unit>
<trans-unit id="ScriptingUnexpectedError">
<source>Unexpected error while scripting: no result returned from script operation.</source>
<target state="new">Unexpected error while scripting: no result returned from script operation.</target>
<note></note>
</trans-unit>
</body> </body>
</file> </file>
</xliff> </xliff>

View File

@@ -1,28 +0,0 @@
//
// Copyright (c) Microsoft. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
//
using System;
namespace Microsoft.SqlTools.ServiceLayer.Scripting
{
public class ScriptingException : Exception
{
public ScriptingException()
: base()
{
}
public ScriptingException(string message, Exception exception)
: base(message, exception)
{
}
public ScriptingException(string message)
: base(message)
{
}
}
}

View File

@@ -23,7 +23,6 @@ using Microsoft.SqlServer.Management.Smo;
using Microsoft.SqlServer.Management.Common; using Microsoft.SqlServer.Management.Common;
using Microsoft.SqlServer.Management.Sdk.Sfc; using Microsoft.SqlServer.Management.Sdk.Sfc;
using Microsoft.SqlTools.ServiceLayer.Utility; using Microsoft.SqlTools.ServiceLayer.Utility;
using Microsoft.SqlTools.ServiceLayer.LanguageServices;
namespace Microsoft.SqlTools.ServiceLayer.Scripting namespace Microsoft.SqlTools.ServiceLayer.Scripting
{ {
@@ -229,85 +228,54 @@ namespace Microsoft.SqlTools.ServiceLayer.Scripting
/// </summary> /// </summary>
private void RunSelectTask(ConnectionInfo connInfo, ScriptingParams parameters, RequestContext<ScriptingResult> requestContext) private void RunSelectTask(ConnectionInfo connInfo, ScriptingParams parameters, RequestContext<ScriptingResult> requestContext)
{ {
Task.Run(() => ConnectionServiceInstance.ConnectionQueue.QueueBindingOperation(
{ key: ConnectionServiceInstance.ConnectionQueue.AddConnectionContext(connInfo, "Scripting"),
try bindingTimeout: ScriptingOperationTimeout,
bindOperation: (bindingContext, cancelToken) =>
{ {
QueueItem queueItem = ConnectionServiceInstance.ConnectionQueue.QueueBindingOperation( string script = string.Empty;
key: ConnectionServiceInstance.ConnectionQueue.AddConnectionContext(connInfo, "Scripting"), ScriptingObject scriptingObject = parameters.ScriptingObjects[0];
bindingTimeout: ScriptingOperationTimeout, try
bindOperation: (bindingContext, cancelToken) => {
Server server = new Server(bindingContext.ServerConnection);
server.DefaultTextMode = true;
// build object URN
SqlConnectionStringBuilder connectionStringBuilder = new SqlConnectionStringBuilder(parameters.ConnectionString);
Urn objectUrn = BuildScriptingObjectUrn(server, connectionStringBuilder, scriptingObject);
string typeName = objectUrn.GetNameForType(scriptingObject.Type);
// select from service broker
if (string.Compare(typeName, "ServiceBroker", StringComparison.CurrentCultureIgnoreCase) == 0)
{ {
return DoScriptSelect(connInfo, parameters, bindingContext); script = Scripter.SelectAllValuesFromTransmissionQueue(objectUrn);
}); }
queueItem.ItemProcessed.WaitOne(); // select from queues
var result = queueItem.GetResultAsT<ScriptingResultWithException>(); else if (string.Compare(typeName, "Queues", StringComparison.CurrentCultureIgnoreCase) == 0 ||
if (result == null) string.Compare(typeName, "SystemQueues", StringComparison.CurrentCultureIgnoreCase) == 0)
{
result = new ScriptingResultWithException()
{ {
Exception = new ScriptingException(SR.ScriptingUnexpectedError) script = Scripter.SelectAllValues(objectUrn);
}; }
// select from table or view
else
{
Database db = server.Databases[connectionStringBuilder.InitialCatalog];
bool isDw = db.IsSqlDw;
script = new Scripter().SelectFromTableOrView(server, objectUrn, isDw);
}
// send script result to client
requestContext.SendResult(new ScriptingResult { Script = script });
} }
if (result.Exception == null) catch (Exception e)
{ {
requestContext.SendResult(result).Wait(); requestContext.SendError(e);
} }
else
{
requestContext.SendError(result.Exception);
}
}
catch (Exception e)
{
requestContext.SendError(e);
}
}).ContinueWithOnFaulted(null);
}
private ScriptingResult DoScriptSelect(ConnectionInfo connInfo, ScriptingParams parameters, IBindingContext bindingContext) return null;
{ });
try
{
string script = string.Empty;
ScriptingObject scriptingObject = parameters.ScriptingObjects[0];
Server server = new Server(bindingContext.ServerConnection);
server.DefaultTextMode = true;
// build object URN
SqlConnectionStringBuilder connectionStringBuilder = new SqlConnectionStringBuilder(parameters.ConnectionString);
Urn objectUrn = BuildScriptingObjectUrn(server, connectionStringBuilder, scriptingObject);
string typeName = objectUrn.GetNameForType(scriptingObject.Type);
// select from service broker
if (string.Compare(typeName, "ServiceBroker", StringComparison.CurrentCultureIgnoreCase) == 0)
{
script = Scripter.SelectAllValuesFromTransmissionQueue(objectUrn);
}
// select from queues
else if (string.Compare(typeName, "Queues", StringComparison.CurrentCultureIgnoreCase) == 0 ||
string.Compare(typeName, "SystemQueues", StringComparison.CurrentCultureIgnoreCase) == 0)
{
script = Scripter.SelectAllValues(objectUrn);
}
// select from table or view
else
{
Database db = server.Databases[connectionStringBuilder.InitialCatalog];
bool isDw = db.IsSqlDw;
script = new Scripter().SelectFromTableOrView(server, objectUrn, isDw);
}
// send script result to client
return new ScriptingResult { Script = script };
}
catch (Exception e)
{
return new ScriptingResultWithException() { Exception = e};
}
} }
/// <summary> /// <summary>
@@ -349,10 +317,5 @@ namespace Microsoft.SqlTools.ServiceLayer.Scripting
} }
} }
} }
internal class ScriptingResultWithException : ScriptingResult
{
public Exception Exception { get; set; }
}
} }
} }