问题描述
在 Visual Studio 2012 中,我们有 <SSDT'中的代码>架构比较s SQL Server Database Project
(DbProject) 项目,帮助
In Visual Studio 2012, we have Schema Compare
in SSDT's SQL Server Database Project
(DbProject) project which helps
- 比较
source
与target
- 更新
target
使其与source
相同
- Compare
source
versustarget
- Update
target
to make it the same assource
哪里
- 源和目标可以是数据库、DbProject 项目或 .dacpac 文件
- 更新可以通过更新操作或生成的脚本 完成
我的问题是是否有可能以及在哪里可以获得命令行/API 接口来调用此功能?
My question is that is it possible to have and where can I get the command-line/API interface to call this feature?
推荐答案
SOURCE 数据库
sqlpackage.exe/a:Extract/scs:Server=%Server%;Database=AspBaselineDB;/tf:%DriveSpec%\%DacPath%\%AspBaselineDB%_baseline.dacpac
目标数据库
sqlpackage.exe/a:Extract/scs:Server=%Server%;Database=%AspTargetDB-2%;/tf:%DriveSpec%\%DacPath%\%AspTargetDB%.dacpac
比较 &生成 Delta 脚本
sqlpackage.exe/a:Script/sf:%DriveSpec%\%DacPath%\%AspBaselineDB%_baseline.dacpac/tf:%DriveSpec%\%DacPath%\AspNetDb\%AspTargetDB%.dacpac/tdn:aspTargetdb/op:%DriveSpec%\%SqlPath%\AspNetDb\AspDbUpdate.sql
执行脚本
sqlcmd.exe -S %Server%\aspnetdbAmexDev -i %DriveSpec%\%SqlPath%\AspNetDb\AspDbUpdate.sql
我在 CMD 脚本中执行此操作,因为我们的 IT 部门不允许未签名的 PowerShell 脚本,他们也不会购买证书.即使从 TFS 2012 Team Builds 调用它,或者只是以管理员身份从 VS 命令提示符执行 .CMD 脚本,这也能完美运行.
I do this in CMD scripting as our IT dept will not allow unsigned PowerShell scripts and they won't purchase a cert. This works flawlessly, even when calling it from TFS 2012 Team Builds or simply executing the .CMD script from a VS command prompt as Administrator.
注意!
在脚本中添加以下 SET:SET PATH=%PATH%;C:\Program Files (x86)\Microsoft SQL Server\110\DAC\bin
Add the following SET in your script: SET PATH=%PATH%;C:\Program Files (x86)\Microsoft SQL Server\110\DAC\bin
另外:如您所见,我设置了路径变量.我这样做是因为我接触了多达 50 种版本的数据库,这是我发现的唯一一致的生成增量脚本和更新我们的 DEV 和 TEST 数据库的方法.
Also: as you can see I set path variables. I do this as I am touching up to 50 flavors of the database and this is the only consistent way I have found to generate delta scripts and update our DEV and TEST databases.
这篇关于SSDT SQL Server 数据库项目中架构比较的命令行/API?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!