Публикация 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();
Другие вопросы по тегам