C# 使用Microsoft.SqlServer.Dac.DacServices以单用户模式发布dacpac
我想以单用户模式发布dac pac,以防止数据库升级时不必要的数据库更改。为此,我使用了Microsoft.SqlServer.Dac.DacServices中的Deploy函数 该函数中有一个参数为“选项”。我在该选项中设置了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?如果它不是最新的,最好是最新的,因为许多旧的
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…靠近顶部吗?