我正在嘗試使用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
非常感謝。