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

时间:2015-06-25 05:20:13

标签: c# sql sql-server dacpac

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

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

我有什么遗漏的吗?或者还有其他方法可以达到这个目的。

帮助将得到赞赏!

1 个答案:

答案 0 :(得分: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();