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

Sur*_*ara 5 c# sql sql-server dacpac

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

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

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

帮助将得到赞赏!

小智 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();
Run Code Online (Sandbox Code Playgroud)