Я использую SSDT (и sqlproj) для наших проектов MSSQL. У нас есть несколько переменных, которые нам нужно установить при публикации в каждой среде.
Это прекрасно работает в большинстве наших сред, где мы присваиваем значения всем переменным, но когда мы публикуем в нашей действующей базе данных, я хотел бы иметь возможность сделать DomainPrefix пустой строкой.
Когда я пытаюсь изменить Live.profile.xml, чтобы установить значение DomainPrefix, я получаю сообщение об ошибке: «Произошла ошибка во время создания плана развертывания. Невозможно продолжить развертывание. Отсутствуют значения для следующих переменных SqlCmd: DomainPrefix».
Вот как я хотел бы, чтобы Live.profile.xml выглядел так:
<?xml version="1.0" encoding="UTF-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="12.0">
<PropertyGroup>
<TargetDatabaseName>DB_NAME</TargetDatabaseName>
<DeployScriptFileName>DB_NAME.sql</DeployScriptFileName>
<TargetConnectionString>CONNECTION_STRING</TargetConnectionString>
<ProfileVersionNumber>1</ProfileVersionNumber>
</PropertyGroup>
<ItemGroup>
<SqlCmdVariable Include="DomainPrefix">
<Value></Value>
</SqlCmdVariable>
<SqlCmdVariable Include="Environment">
<Value>live</Value>
</SqlCmdVariable>
</ItemGroup>
</Project>
Кто-нибудь знает, как установить для SqlCmdVariable пустое значение или сделать его необязательной переменной?
С использованием:
- VS 2013 sqlproj
- SqlPackage.exe для запуска публикации в БД из командной строки
:out
и обстрелом через!!
не), и я не верю, что все они доступны через публикацию SSDT. Я разместил ответ ниже с лучшим, что я мог придумать, учитывая ограничения. - person Solomon Rutzky   schedule 18.08.2015