我想以单用户模式发布 dac pac,以防止在数据库升级时进行不必要的数据库更改。为此,我在Microsoft.SqlServer.Dac.DacServices中使用了 Deploy 函数。
该函数有一个参数 DacDeployOptions 选项。我已经设置DeployDatabaseInSingleUserMode = true了那个选项。即使它设置为 true,我也可以在 dacpac 部署时进行 db 操作。
有什么我想念的吗?或者有没有其他方法可以实现这一点。
帮助将不胜感激!
我想以单用户模式发布 dac pac,以防止在数据库升级时进行不必要的数据库更改。为此,我在Microsoft.SqlServer.Dac.DacServices中使用了 Deploy 函数。
该函数有一个参数 DacDeployOptions 选项。我已经设置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();