在SSDT項目中有兩個截然不同的目標Deploy
和Publish
,與Build
並列,但我無法找到它們之間的區別以及應該在什麼時候使用哪個目標?從我可以收集的.dbproj
曾用於使用Deploy
,但.sqlproj
據說用Publish
代替它,它仍然存在,它仍然用於什麼?SQL Server數據庫項目的部署和發佈目標
$(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不會生成增量腳本,我可能需要通過DacServices創建一個自定義的「腳本」任務並將其應用於SMO之類的東西? –
實際上,在運行部署時,默認情況下,默認情況下會創建增量腳本。我相信要生成腳本而不運行部署,請設置「/ p:UpdateDatabase = false」並使用「/p:ScriptName=MyScriptName.sql」指定增量腳本名稱。要確認這些名稱,請查看Microsoft.Data.Tools.Schema.SqlTasks.targets文件中的屬性。 –