如何更新/分发SQL Server数据库项目?

时间:2015-01-21 13:44:42

标签: sql-server database visual-studio projects

我的公司正在考虑转换我们当前管理软件使用的数据库的方法。我们不仅需要管理办公室数据库,还需要管理全国各地的客户数据库。目前,我们有一个程序,它运行各种sql脚本来添加,删除和更新数据库中的字段和表,但这开始变得庞大而繁琐。

我的任务是研究SQL Server数据库项目,就创建新数据库而言,它看起来很棒。但是,我无法找到有关如何使用此功能向客户分发更新的更多信息(他们在现场运行自己的SQL Server),以便他们拥有最新的表和架构信息,以便与更改和添加的功能相对应我们的计划。有没有内置的方法来做到这一点?

每次我查找使用DB Projects更新现有数据库时,都会说使用模式比较。由于各种原因,在个人测试数据库之外,这绝对不是一种选择。

4 个答案:

答案 0 :(得分:1)

我建议您使用SqlPackage.exe在客户端计算机上进行部署。一般过程是:将现有数据库导入SQL项目。获取此构建包含所有架构更改的.dacpac,以及根据需要编写操作数据所需的前/后部署脚本。然后使用发布进行数据库更新,而不是使用Schema Compare,在VS中,有一个" Publish"项目上的选项,而SqlPackage.exe是具有匹配功能的命令行工具。

这种方法有两个好处:

  1. 完全发布可确保实际更新目标数据库以匹配项目架构。如果您针对一个数据库生成脚本(使用架构比较/发布)然后尝试应用于其他数据库,则必须事先希望它们具有完全相同的架构。如果您实际针对真实目标服务器运行发布/生成脚本,您将保证所应用的内容符合您的预期。
  2. 在您无法在客户端计算机上安装任何内容的情况下,SqlPackage非常有用。这是因为您可以将所有必需的DLL复制到1个文件夹(从C:\中获取SqlPackage.exe和同一文件夹中的其他文件,以及Microsoft.SqlServer.TransactSql.ScriptDom.dll和Microsoft.SqlServer.Types.dll)程序文件(x86)\ Microsoft SQL Server \ 120 \ SDK \ Assemblies)并在任何地方使用它。您可以将其放在拇指驱动器上或将其作为.zip文件复制

答案 1 :(得分:0)

尝试SQL服务器数据工具(SSDT)+ TFS +架构比较。它会自动创建架构更新脚本。 它在链接服务器和跨数据库方面存在一些问题,但到目前为止我尝试了一切都可以通过某种方式解决。 另一件事是Redgate Source控件。非常简单直观。但是它需要额外的钱。

答案 2 :(得分:0)

通常,您保留以前版本的数据库的版本,并执行与该版本比较的架构,然后将其另存为.SQL文件。然后客户端可以运行几个.sql文件的组合以使它们达到最新版本(但它们不能以这种方式降级)。

作为替代方案,请查看实体框架迁移https://msdn.microsoft.com/en-gb/data/jj591621.aspx,它们可以让您控制更新架构和插入记录,但也可以让您在需要时回滚/降级。

答案 3 :(得分:0)

如果您选择使用Redgate工具,这是一种方法。

  1. 在您的客户数据库上运行Snapper。这是一个免费工具,可以获取客户数据库的模式快照。这将创建一个仅包含架构信息的二进制文件。

  2. 将此架构文件复制到本地环境。使用SQL Compare将您的开发数据库(假设这是升级的源)与模式快照(目标)进行比较。这将生成为您的客户量身定制的SQL部署文件。

  3. 将SQL部署文件复制到客户环境并执行它。

  4. 如果您需要任何进一步的帮助,请在此答案中发表评论或在our forum上发帖提问。我们很乐意提供帮助。

相关问题