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

C# 使用Microsoft.SqlServer.Dac.DacServices以单用户模式发布dacpac,c#,sql,sql-server,dacpac,C#,Sql,Sql Server,Dacpac,我想以单用户模式发布dac pac,以防止数据库升级时不必要的数据库更改。为此,我使用了Microsoft.SqlServer.Dac.DacServices中的Deploy函数 该函数中有一个参数为“选项”。我在该选项中设置了DeployDatabaseInSingleUserMode=true。即使设置为true,我也可以在部署dacpac时执行db操作 我有什么遗漏吗?或者有没有其他方法来实现这一点 谢谢你的帮助 您使用的是哪个版本的DacFX?如果它不是最新的,最好是最新的,因为许多旧的

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

该函数中有一个参数为“选项”。我在该选项中设置了
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();

我看到其他人有类似的问题-你能生成脚本,看看它是否有一个ALTER DATABASE SET SINGLE_USER…靠近顶部吗?