DacDeployOptions DeployeDatabaseInSingleUserMode, кажется, не имеет никакого эффекта
Я пытаюсь выполнить развертывание с использованием DacFx, и мне нужно перевести базу данных в однопользовательский режим, чтобы никто (кроме контекста обновления dac) не мог обновить базу данных.
_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) в сценарии, что означает, что мне придется помассировать его перед его фактическим выполнением),
Вопрос об отношениях: Публикация dacpac в однопользовательском режиме с использованием Microsoft.SqlServer.Dac.DacServices
Спасибо большое.
1 ответ
Это было легко - мой SSDT (инструменты данных SQL-сервера) нуждался в обновлении. После обновления до последней версии (11.1.50717.0) настройка начала работать.