mirror of
https://github.com/ckaczor/sqltoolsservice.git
synced 2026-02-16 10:58:30 -05:00
Change DacFx operation requests to send result after operation completes instead of after starting (#905)
This commit is contained in:
@@ -67,7 +67,7 @@ namespace Microsoft.SqlTools.ServiceLayer.DacFx
|
|||||||
if (connInfo != null)
|
if (connInfo != null)
|
||||||
{
|
{
|
||||||
ExportOperation operation = new ExportOperation(parameters, connInfo);
|
ExportOperation operation = new ExportOperation(parameters, connInfo);
|
||||||
await ExecuteOperation(operation, parameters, SR.ExportBacpacTaskName, requestContext);
|
ExecuteOperation(operation, parameters, SR.ExportBacpacTaskName, requestContext);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
@@ -91,7 +91,7 @@ namespace Microsoft.SqlTools.ServiceLayer.DacFx
|
|||||||
if (connInfo != null)
|
if (connInfo != null)
|
||||||
{
|
{
|
||||||
ImportOperation operation = new ImportOperation(parameters, connInfo);
|
ImportOperation operation = new ImportOperation(parameters, connInfo);
|
||||||
await ExecuteOperation(operation, parameters, SR.ImportBacpacTaskName, requestContext);
|
ExecuteOperation(operation, parameters, SR.ImportBacpacTaskName, requestContext);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
@@ -117,7 +117,7 @@ namespace Microsoft.SqlTools.ServiceLayer.DacFx
|
|||||||
// Set connection details database name to ensure the connection string gets created correctly for DW(extract doesn't work if connection is to master)
|
// Set connection details database name to ensure the connection string gets created correctly for DW(extract doesn't work if connection is to master)
|
||||||
connInfo.ConnectionDetails.DatabaseName = parameters.DatabaseName;
|
connInfo.ConnectionDetails.DatabaseName = parameters.DatabaseName;
|
||||||
ExtractOperation operation = new ExtractOperation(parameters, connInfo);
|
ExtractOperation operation = new ExtractOperation(parameters, connInfo);
|
||||||
await ExecuteOperation(operation, parameters, SR.ExtractDacpacTaskName, requestContext);
|
ExecuteOperation(operation, parameters, SR.ExtractDacpacTaskName, requestContext);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
@@ -141,7 +141,7 @@ namespace Microsoft.SqlTools.ServiceLayer.DacFx
|
|||||||
if (connInfo != null)
|
if (connInfo != null)
|
||||||
{
|
{
|
||||||
DeployOperation operation = new DeployOperation(parameters, connInfo);
|
DeployOperation operation = new DeployOperation(parameters, connInfo);
|
||||||
await ExecuteOperation(operation, parameters, SR.DeployDacpacTaskName, requestContext);
|
ExecuteOperation(operation, parameters, SR.DeployDacpacTaskName, requestContext);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
@@ -221,21 +221,35 @@ namespace Microsoft.SqlTools.ServiceLayer.DacFx
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task ExecuteOperation(DacFxOperation operation, DacFxParams parameters, string taskName, RequestContext<DacFxResult> requestContext)
|
private void ExecuteOperation(DacFxOperation operation, DacFxParams parameters, string taskName, RequestContext<DacFxResult> requestContext)
|
||||||
{
|
{
|
||||||
SqlTask sqlTask = null;
|
Task.Run(async () =>
|
||||||
TaskMetadata metadata = TaskMetadata.Create(parameters, taskName, operation, ConnectionServiceInstance);
|
|
||||||
|
|
||||||
// put appropriate database name since connection passed was to master
|
|
||||||
metadata.DatabaseName = parameters.DatabaseName;
|
|
||||||
|
|
||||||
sqlTask = SqlTaskManagerInstance.CreateAndRun<SqlTask>(metadata);
|
|
||||||
|
|
||||||
await requestContext.SendResult(new DacFxResult()
|
|
||||||
{
|
{
|
||||||
OperationId = operation.OperationId,
|
try
|
||||||
Success = true,
|
{
|
||||||
ErrorMessage = string.Empty
|
TaskMetadata metadata = TaskMetadata.Create(parameters, taskName, operation, ConnectionServiceInstance);
|
||||||
|
|
||||||
|
// put appropriate database name since connection passed was to master
|
||||||
|
metadata.DatabaseName = parameters.DatabaseName;
|
||||||
|
SqlTask sqlTask = SqlTaskManagerInstance.CreateTask<SqlTask>(metadata);
|
||||||
|
|
||||||
|
await sqlTask.RunAsync();
|
||||||
|
await requestContext.SendResult(new DacFxResult()
|
||||||
|
{
|
||||||
|
OperationId = operation.OperationId,
|
||||||
|
Success = sqlTask.TaskStatus == SqlTaskStatus.Succeeded,
|
||||||
|
ErrorMessage = string.Empty
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
await requestContext.SendResult(new DacFxResult()
|
||||||
|
{
|
||||||
|
OperationId = operation.OperationId,
|
||||||
|
Success = false,
|
||||||
|
ErrorMessage = e.Message
|
||||||
|
});
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user