Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在调用DacService.Deploy后取消并回滚升级包?_C#_Sql_.net_Tsql_Dac - Fatal编程技术网

C# 如何在调用DacService.Deploy后取消并回滚升级包?

C# 如何在调用DacService.Deploy后取消并回滚升级包?,c#,sql,.net,tsql,dac,C#,Sql,.net,Tsql,Dac,当: 如何通过取消令牌取消它,这会回滚整个部署操作 CancellationToken token = new CancellationToken(); service.Deploy(dacpac, dbName, true, ddo, token); 因此,我可以创建一个取消令牌并将其传递到Deploy方法中,但之后如何取消它?但是,它会回滚整个操作吗 CancellationToken token = new CancellationToken(); service.Deploy(dacp

当:

如何通过取消令牌取消它,这会回滚整个部署操作

CancellationToken token = new CancellationToken();
service.Deploy(dacpac, dbName, true, ddo, token);
因此,我可以创建一个取消令牌并将其传递到Deploy方法中,但之后如何取消它?但是,它会回滚整个操作吗

CancellationToken token = new CancellationToken();
service.Deploy(dacpac, dbName, true, ddo, token);
将标志设置为“true”将在事务中包装模型部署步骤。如果展开失败或取消,发动机将尝试回滚这些步骤。请注意,部署前/部署后脚本步骤不放在事务中,因此,如果使用这些步骤,您需要自己将它们设置为事务性的。这是因为a)引擎不解析它们或试图理解它们的内容,b)它们可能包含与事务不兼容的代码,因此引擎不尝试强制事务性

要实际调用cancel,您可以使用。我认为代码应该是这样的:

DacServices service = new DacServices(connectionString);
DacPackage dacpac = DacPackage.Load(dacpacPath);
DacDeployOptions ddo = new DacDeployOptions();
ddo.BlockOnPossibleDataLoss = false;
ddo.IncludeTransactionalScripts = true;
CancellationTokenSource tokenSource = new CancellationTokenSource();
service.Deploy(dacpac, dbName, true, ddo, tokenSource.Token);
tokenSource.Cancel();