Deployment Sqlproj:在命令行中部署数据库的解决方案是什么?
我目前正在使用Microsoft Web部署技术(msbuild和msdeploy命令)将网站部署到服务器。该网站需要部署一个数据库,两者将位于同一服务器上。我正在寻找部署数据库项目的最佳解决方案(使用命令行),我想更好地了解数据库部署的所有技术 解决方案的内容(Visual Studio 2013):Deployment Sqlproj:在命令行中部署数据库的解决方案是什么?,deployment,msdeploy,vsdbcmd,sqlproj,sqlpackage,Deployment,Msdeploy,Vsdbcmd,Sqlproj,Sqlpackage,我目前正在使用Microsoft Web部署技术(msbuild和msdeploy命令)将网站部署到服务器。该网站需要部署一个数据库,两者将位于同一服务器上。我正在寻找部署数据库项目的最佳解决方案(使用命令行),我想更好地了解数据库部署的所有技术 解决方案的内容(Visual Studio 2013): 数据库项目(用于SQL Server 2008) 类库(使用NHibernate的数据访问层) web项目(ASP.NET MVC4) 注意:我不是自愿在VS中使用持续集成/交付工具或发布方
- 数据库项目(用于SQL Server 2008)
- 类库(使用NHibernate的数据访问层)
- web项目(ASP.NET MVC4)
- 这是否意味着我在第一次创建数据库时需要一个不同的进程?如果是,哪个命令最好
- 可以从我的sqlproj文件创建dacpac吗?如果是,怎么做
非常感谢,通过进一步研究,我发现VisualStudio在构建sqlproj时正在创建dacpac(bin/Debug或bin/Release,具体取决于构建配置)。第一次部署时,dacpac将创建数据库。当您进行模式更改时,它似乎会应用它们 以下是网站和数据库的命令行摘要: 网站建设
msbuild %fullpathwebcsproj% /P:Configuration=Release /T:Package
网站部署(默认应用程序池)
%fullpathpackage%:当/T:Package存在时由msbuild创建的zip文件的路径(bin/Release)
数据库构建:
msbuild %fullpathsqlproj% /P:Configuration=Release
msdeploy -verb:Sync -Source:dbDacFx=%fullpathdacpac% -Dest:dbDacFx=%connectionstring%
数据库部署:
msbuild %fullpathsqlproj% /P:Configuration=Release
msdeploy -verb:Sync -Source:dbDacFx=%fullpathdacpac% -Dest:dbDacFx=%connectionstring%
这个解决方案现在让我很满意。尽管如此,我仍然愿意接受改进意见和建议。通过进一步研究,我发现Visual Studio在构建sqlproj时正在创建dacpac(bin/Debug或bin/Release,具体取决于构建配置)。第一次部署时,dacpac将创建数据库。当您进行模式更改时,它似乎会应用它们 以下是网站和数据库的命令行摘要: 网站建设
msbuild %fullpathwebcsproj% /P:Configuration=Release /T:Package
网站部署(默认应用程序池)
%fullpathpackage%:当/T:Package存在时由msbuild创建的zip文件的路径(bin/Release)
数据库构建:
msbuild %fullpathsqlproj% /P:Configuration=Release
msdeploy -verb:Sync -Source:dbDacFx=%fullpathdacpac% -Dest:dbDacFx=%connectionstring%
数据库部署:
msbuild %fullpathsqlproj% /P:Configuration=Release
msdeploy -verb:Sync -Source:dbDacFx=%fullpathdacpac% -Dest:dbDacFx=%connectionstring%
这个解决方案现在让我很满意。尽管如此,我仍然愿意接受改进意见和建议。好的,因此一个.sqlproj文件被编译成一个dacpac文件,它基本上是一个zipfile,包含任何部署前/部署后文件和一个包含所有sql脚本(模型)内容的xml文件 使用msbuild时,它使用DacFx api比较dacpac中的更改并将其发布到sql数据库 您可以使用msbuild,也可以自己使用DacFx api,或者通常人们使用sqlpackage.exe获取dacpac并与数据库进行比较,然后它可以生成脚本以便手动运行,也可以运行它生成的脚本以更新数据库 您可以使用sqlpackage执行其他操作,例如生成一个部署报告,其中包含如果要求它更改的所有内容 通过构建项目生成dacpac,它将位于输出目录中
它是幂等的,这意味着无论它运行多少次,在第一个实例之后,它总是以相同的结果结束-因此每次更改代码时,构建dacpac并部署它-如果数据库不存在,那么它将被创建,如果它确实存在,它将只部署更改。好的,那么一个.sqlproj文件被编译成一个dacpac文件,它基本上是一个zipfile,包含任何部署前/部署后文件和一个包含所有sql脚本(模型)内容的xml文件 使用msbuild时,它使用DacFx api比较dacpac中的更改并将其发布到sql数据库 您可以使用msbuild,也可以自己使用DacFx api,或者通常人们使用sqlpackage.exe获取dacpac并与数据库进行比较,然后它可以生成脚本以便手动运行,也可以运行它生成的脚本以更新数据库 您可以使用sqlpackage执行其他操作,例如生成一个部署报告,其中包含如果要求它更改的所有内容 通过构建项目生成dacpac,它将位于输出目录中
它是幂等的,这意味着无论它运行多少次,在第一个实例之后,它总是以相同的结果结束-因此每次您更改代码时,构建dacpac并部署它-如果数据库不存在,那么它将被创建,如果它存在,它将只部署更改。当您说“首次部署时,dacpac将创建您的数据库。当您进行模式更改时,它似乎会应用它们。”,您是说您部署了数据库吗?是的,这就是我的意思。当您说“第一次部署时,dacpac将创建您的数据库。当您进行模式更改时,它似乎会应用它们。”,您的意思是