SSDT SQL Server 数据库项目中用于架构比较的命令行/API?

2024-05-18

在 Visual Studio 2012 中,我们有Schema Compare http://msdn.microsoft.com/en-us/library/hh272690%28v=vs.103%29.aspx in SSDT http://msdn.microsoft.com/en-us/data/tools.aspx's SQL Server Database Project(DbProject) 项目有帮助

  1. Compare source versus target
  2. Update target使其与source

Where

  1. 源和目标可以是数据库、DbProject 项目或 .dacpac 文件
  2. 更新可以通过更新动作 or 生成的脚本

我的问题是,是否有可能以及在哪里可以获得命令行/API 接口来调用此功能?


来源数据库

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 脚本,它也可以完美地工作。

Note!

在脚本中添加以下 SET:SET PATH=%PATH%;C:\Program Files (x86)\Microsoft SQL Server\110\DAC\bin

另外:正如你所看到的,我设置了路径变量。我这样做是因为我正在接触多达 50 种数据库风格,这是我发现生成增量脚本并更新我们的 DEV 和 TEST 数据库的唯一一致的方法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SSDT SQL Server 数据库项目中用于架构比较的命令行/API? 的相关文章