Публикация dacpac в однопользовательском режиме с использованием Microsoft.SqlServer.Dac.DacServices
Я хочу опубликовать dac pac в однопользовательском режиме, чтобы избежать ненужных изменений в БД во время обновления базы данных. Для этого я использовал функцию Deploy в Microsoft.SqlServer.Dac.DacServices.
У этой функции есть аргумент DacDeployOptions. Я поставил DeployDatabaseInSingleUserMode = true
в этих вариантах. Несмотря на то, что для него установлено значение true, я могу выполнять операции с БД во время развертывания dacpac.
Есть что-то, что я пропускаю? или есть ли другой способ добиться этого.
Помощь будет оценена!
1 ответ
Какую версию 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();