Sql server 如何更新/分发SQ Server DB项目?
我的公司正在让我考虑改变目前管理软件使用的数据库的方法。我们不仅需要管理办公室内的数据库,还需要管理全国各地的客户数据库。目前,我们有一个程序,它运行各种sql脚本来添加、删除和更新数据库中的字段和表,但是这个程序开始变得庞大和繁琐 我的任务是研究SQL Server数据库项目,至于创建一个新的数据库,它看起来很棒。但是,我找不到太多关于我们如何能够使用此向客户分发更新的信息(他们在站点上运行自己的SQL Server),以便他们拥有最新的表和模式信息,以便与我们程序中的更改和添加的功能相对应。有什么内置的方法可以做到这一点吗 每次我用DB项目更新现有数据库时,它都会说使用模式比较。出于各种原因,在个人测试数据库之外,这绝对不是一个选项 试试SQL server数据工具(SSDT)+TFS+模式比较。它会自动创建模式更新脚本。 它在链接服务器和跨数据库方面存在一些问题,但到目前为止,我尝试了通过某种方式解决所有问题。Sql server 如何更新/分发SQ Server DB项目?,sql-server,database,visual-studio,projects,Sql Server,Database,Visual Studio,Projects,我的公司正在让我考虑改变目前管理软件使用的数据库的方法。我们不仅需要管理办公室内的数据库,还需要管理全国各地的客户数据库。目前,我们有一个程序,它运行各种sql脚本来添加、删除和更新数据库中的字段和表,但是这个程序开始变得庞大和繁琐 我的任务是研究SQL Server数据库项目,至于创建一个新的数据库,它看起来很棒。但是,我找不到太多关于我们如何能够使用此向客户分发更新的信息(他们在站点上运行自己的SQL Server),以便他们拥有最新的表和模式信息,以便与我们程序中的更改和添加的功能相对应。
另一件事是红门源代码控制。非常简单和直观。但是它需要额外的钱。通常,您会保留以前版本数据库的一个版本,并与该版本进行模式比较,然后将其保存为.SQL文件。然后,客户端可以运行多个.sql文件的组合,以将它们升级到最新版本(但它们不能以这种方式降级)
作为替代方案,请查看实体框架迁移,它们使您可以控制更新架构和插入记录,但也允许您在需要时回滚/降级。我建议您在客户端计算机上使用SqlPackage.exe进行部署。一般过程是:将现有数据库导入SQL项目。获取包含所有模式更改的.dacpac,并根据需要编写操作数据所需的部署前/部署后脚本。然后,不要使用模式比较,而是使用发布进行数据库更新-在VS中,项目上有一个“发布”选项,而SqlPackage.exe是具有匹配功能的命令行工具 这种方法有两个好处:
如果您选择使用Redgate工具,这里有一个方法
如果您需要任何进一步的帮助,请对此答案发表评论或在上发表问题。我们很乐意提供帮助。与我们最多只能访问RDP的数据库相比,我们如何使用类似于模式的东西?目前,我提到的应用程序由客户通过我们的网站或FTP下载,然后他们运行它,在那里它将运行各种SQL脚本。所有客户可能都没有运行以前的更新,因此很遗憾,我们不能仅基于当前的office数据库。请使用版本控制TFS、Git、CVS和SVN。任何人。然后通过RDP把它拿到他们的服务器上进行比较。我想确保我能理解。我有一个包含所有静态数据的基本sql数据库,它的模式与sql项目相同。我有一个客户的服务器上有一个数据库,需要更新的模式和静态数据。我使用SQLPackage的过程是什么?我构建了我的SQL项目,并得到了一个dacpac文件。然后,在客户机上,我将使用我假设的一些参数运行SqlPackage,一些参数指向dacpac,另一些参数指向数据库/服务器?如果你能澄清/纠正整个过程,你将比你已经纠正的更能拯救生命。下面是一个解释使用SqlPackage.exe部署的博客:。对于静态数据,建议编写一个部署后脚本,将该数据合并到表中(例如,使其幂等,以便多次部署不会弄乱数据)。Jamie Thomson在这篇博文中有这样的例子:。这里还有SqlPackage.exe doc页面-很有帮助,因为它解释了发布/脚本所需的各种参数。实际上,这可能是在项目中包含数据的最佳参考,清楚地展示了如何编写合并。希望这对你有帮助,非常感谢!这一切看起来都很棒,我希望能很快测试出来!