Есть две различные цели: Deploy
и Publish
, в проекте SSDT вместе с Build
, но я не могу найти что-либо по поводу того, какая разница между ними и какой из них следует использовать, когда? Из того, что я могу собрать .dbproj
использовал Deploy
, но .sqlproj
предположительно заменил его Publish
, почему он все еще там и для чего он еще используется?Задачи развертывания и публикации базы данных SQL Server Database
$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v$(VisualStudioVersion)\SSDT\Microsoft.Data.Tools.Schema.SqlTasks.targets
<UsingTask TaskName="SqlBuildTask" AssemblyFile="$(SqlServerRedistPath)\Microsoft.Data.Tools.Schema.Tasks.Sql.12.dll" />
<UsingTask TaskName="SqlDeployTask" AssemblyFile="$(SqlServerRedistPath)\Microsoft.Data.Tools.Schema.Tasks.Sql.12.dll" />
<UsingTask TaskName="SqlPublishTask" AssemblyFile="$(SqlServerRedistPath)\Microsoft.Data.Tools.Schema.Tasks.Sql.12.dll" />
<DeployDependsOn>
BeforeDeploy;
PreDeployEvent;
SqlDeploy;
PostDeployEvent;
AfterDeploy
</DeployDependsOn>
<Target Name="Deploy" DependsOnTargets="$(DeployDependsOn)">
<PublishDependsOn>
BeforePublish;
PrePublishEvent;
SqlPublish;
PostPublishEvent;
AfterPublish
</PublishDependsOn>
<Target Name="Publish" DependsOnTargets="$(PublishDependsOn)">
Спасибо, Кевин. Правильно ли я понимаю, что Deploy/Publish не создает сценарий дельта, и мне может потребоваться создать пользовательскую задачу «Script» с помощью DacServices и применить ее с чем-то вроде SMO? –
На самом деле задачи создают дельта-скрипт по умолчанию при запуске развертывания. Я считаю, что для создания сценария без запуска развертывания установите «/ p: UpdateDatabase = false» и укажите имя сценария дельта, используя «/p:ScriptName=MyScriptName.sql». Для подтверждения этих имен проверьте свойства в файле Microsoft.Data.Tools.Schema.SqlTasks.targets. –