2015-06-25 4 views
5

Я хочу опубликовать dac pac в однопользовательском режиме, чтобы предотвратить ненужные изменения базы данных при обновлении базы данных. Для этого я использовал функцию развертывания в Microsoft.SqlServer.Dac.DacServices.Публикация dacpac в однопользовательском режиме с использованием Microsoft.SqlServer.Dac.DacServices

В этой функции есть аргумент параметров DacDeployOptions. В этих настройках я установил DeployDatabaseInSingleUserMode = true. Несмотря на то, что для него установлено значение true, я могу выполнять операцию db во время развертывания dacpac.

Есть ли что-нибудь, что мне не хватает? или Есть ли другой способ достичь этого.

Помощь будет оценена!

+3

меня видеть кого-то еще с подобной проблемой -. Вы можете создать сценарий и посмотрите, есть ли у него ALTER DATABASE SET SINGLE_USER ... вверху? –

ответ

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(); 
Смежные вопросы