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

5
我想以单用户模式发布dac pac,以防止数据库升级时进行不必要的数据库更改。为此,我使用了Microsoft.SqlServer.Dac.DacServices中的Deploy函数。
在该函数中有一个参数DacDeployOptions选项。我已经在该选项中设置了DeployDatabaseInSingleUserMode=true。尽管已将其设置为true,但我仍然能够在dacpac部署过程中执行数据库操作。
我是否遗漏了什么?或者还有其他方法可以实现这一目标。
感谢您的帮助!

3
我看到有人遇到了类似的问题 - 你能否生成脚本并检查顶部是否有 "ALTER DATABASE SET SINGLE_USER ..." 命令?请注意,翻译内容不包括解释或其他额外信息。 - Ed Elliott
1个回答

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接