2016-05-12 122 views
0

我正在嘗試使用DacFx進行部署,並且需要將數據庫置於單用戶模式,以便沒有人(但是dac更新上下文)可以更新數據庫。DacDeployOptions DeployeDatabaseInSingleUserMode似乎沒有任何效果

_deployOptions = new DacDeployOptions 
      { 
       BlockOnPossibleDataLoss = false, 
       IncludeCompositeObjects = true, 
       IncludeTransactionalScripts = true, 
       DropConstraintsNotInSource = deployConfig.DropConstraintsNotInSource, 
       DropIndexesNotInSource = deployConfig.DropIndexesNotInSource, 
       DropDmlTriggersNotInSource = false, 
       DeployDatabaseInSingleUserMode = true 
      }; 

DacServices.Deploy(dacpac, _dbName, true, _deployOptions); 

部署過程(我已確認)不會將數據庫置於單用戶模式;但是,如果我用

var script = DacServices.GenerateDeployScript(dacpac, _dbName, _deployOptions); 

得到的腳本確實有一個用戶在設置之初,和多用戶設置底。爲什麼執行Deploy時沒有正確使用DeployDatabaseInSingleUserMode設置的理由?在這一天結束時,我只需要確保在此更新過程中不會發生數據庫更新 - 如果還有其他方式(除單用戶之外),我願意接受建議。

我也嘗試生成\正在執行腳本,但我擔心腳本可能會變得太大(再加上腳本中使用的$(DatabaseName)有問題,這意味着我必須先按摩它實際執行它)。

關係問題: Publish dacpac in single user mode using Microsoft.SqlServer.Dac.DacServices

非常感謝。

回答

0

這很簡單 - 我的SSDT(SQL服務器數據工具)需要更新。更新到最新版本(11.1.50717.0)後,設置開始工作。

相關問題