JM8*_*M89 1 deployment msdeploy vsdbcmd sqlproj sqlpackage
我目前正在使用Microsoft Web部署技术(msbuild和msdeploy命令)将网站部署到服务器.该网站需要部署数据库,两者都在同一台服务器上.我正在寻找部署数据库项目(使用命令行)的最佳解决方案,我想更好地了解有关数据库部署的所有技术.
解决方案的内容(Visual Studio 2013):
注意:我没有自愿使用VS中的持续集成/交付工具或发布方法.我这个项目的第一个目标是了解msbuild/msdeploy如何工作......
我看了一下vsdbcmd命令,它似乎做了我想要的所有步骤......除了我需要将Visual Studio DLLs /文件导入我的远程服务器,我想知道是否有更好的方法......我也看了在msdeploy提供程序dbSqlPackage/dbDacFx,但据我所知,它使用dacpac来应用架构更改.同样,SqlPackage.exe似乎也使用dacpac.
使用dacpac听起来不错,但我对以下问题感到困惑:
是否有其他方法可以从命令行以及您的经验和项目进行部署,部署此类项目的最佳方式是什么?
非常感谢,
通过进一步的研究,我发现Visual Studio在构建sqlproj(bin/Debug或bin/Release取决于你的构建配置)时创建了一个dacpac.第一次部署时,dacpac会创建您的数据库.当您进行架构更改时,它似乎应用它们.
这里是网站和数据库命令行的总结:
网站建设
msbuild %fullpathwebcsproj% /P:Configuration=Release /T:Package
Run Code Online (Sandbox Code Playgroud)
网站部署(默认应用程序池)
msdeploy -verb:sync -source:package=%fullpathpackage% -dest:auto
Run Code Online (Sandbox Code Playgroud)
%fullpathpackage%:当/ T:包在那里时由msbuild创建的zip文件的路径(bin/Release)
数据库构建:
msbuild %fullpathsqlproj% /P:Configuration=Release
Run Code Online (Sandbox Code Playgroud)
数据库部署:
msdeploy -verb:Sync -Source:dbDacFx=%fullpathdacpac% -Dest:dbDacFx=%connectionstring%
Run Code Online (Sandbox Code Playgroud)
这个解决方案现在让我满意.尽管如此,我仍然愿意接受改进的意见和建议.