使用Microsoft.SqlServer.Dac.DacServices在单用户模式下发布dacpac

我想在单用户模式下发布dac pac,以防止在数据库升级时不必要的数据库更改。 为此,我在Microsoft.SqlServer.Dac.DacServices中使用了Deployfunction。

该函数有一个参数DacDeployOptions选项。 我在该选项中设置了DeployDatabaseInSingleUserMode = true 。 即使它设置为true,我也可以在dacpac部署时执行db操作。

有什么我想念的吗? 或者有没有其他方法来实现这一目标。

帮助将得到赞赏!

您使用的是哪个版本的DacFX? 如果它不是最新的,那么最好的是最新的,因为很多旧版本并不擅长识别您指定的选项。

或者,您可以这样做(这就是我所做的,而不是试图让DacFX正常工作。

  ServerConnection connection = new ServerConnection(ServerName); Server sqlServer = new Server(connection); Database QADatabase = sqlServer.Databases[DatabaseName]; QADatabase.DatabaseOptions.UserAccess = DatabaseUserAccess.Single; QADatabase.Alter(TerminationClause.RollbackTransactionsImmediately); QADatabase.Refresh(); //DACPAC logic goes here QADatabase.DatabaseOptions.UserAccess = DatabaseUserAccess.Multiple; QADatabase.Alter(TerminationClause.RollbackTransactionsImmediately); QADatabase.Refresh();