2015-06-25 6 views
5

kullanarak tek bir kullanıcı modunda dacpac yayımlayın Veritabanı yükseltme yaparken gereksiz db değişikliklerini önlemek için tek kullanıcı modunda dac pac yayımlamak istiyorum. Bunun için Microsoft.SqlServer.Dac.DacServices'da Deploy işlevini kullandım.Microsoft.SqlServer.Dac.DacServices

Bu işlevde bir DacDeployOptions seçenekleri argümanı var. Bu seçeneklerde DeployDatabaseInSingleUserMode = true'u ayarladık. Her ne kadar doğru olarak ayarlanmış olsa da, dacpac dağıtılırken db işlemi yapabiliyorum.

Eksik olduğum bir şey var mı? veya Bunu başarmanın başka bir yolu var mı?

Yardım Takdir edilecektir!

+3

bu yapabileceğini - Senaryoyu oluşturabilir ve Üstte bir ALTER DATABASE SET SINGLE_USER ... olup olmadığını görüyor musunuz? –

cevap

0

DacFX'in hangi sürümünü kullanıyorsunuz? En son değilse, en iyisi en iyisi olsun, çünkü büyüklerin birçoğu belirttiğiniz seçenekleri tanımak için çok iyi değildir. .

Alternatif olarak, ben benzer bir sorunu olan başka birini görmek zorunda It i yerine düzgün çalışması için DacFX almaya çalışırken, yaptığın şey (

  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();