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

本文关键字:用户 模式 dacpac SqlServer Microsoft Dac DacServices 单用户 使用 | 更新日期: 2023-09-27 17:59:28

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

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

我缺什么了吗?或者有其他方法可以实现这一点吗。

我们将不胜感激!

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

您使用的是哪个版本的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();