我有一个使用SQL Express的应用程序,我的客户主要是那些没有专职IT人员的人,因此不知道如何运行脚本。因此部署和升级必须简单。部署部分都搞清楚了。我需要知道的是,当产品的第2版出现以及更新数据库结构或数据的时候,是否有比传统脚本方法更好的方法。脚本方法的问题通常是,一群开发人员使用开发数据库,并且没有跟踪谁做了哪些更改,以便能够将它们合并到部署数据库中。
答案 0 :(得分:2)
跟踪,或者使用Red Gate的比较工具等产品生成脚本,然后让安装程序运行升级脚本。用户永远不需要双击setup.exe。
答案 1 :(得分:0)
我建议使用SQLCompare。它允许您在不必担心脚本的情况下进行所有更改,然后您可以快速将Dev / Stage环境与生产环境同步,或者创建一个可以在远程计算机上运行的脚本。
如果您不想支持$$$,请将所有更改保存在源代码管理中,就像您的代码一样。您可以单独保留每个更改脚本,也可以让scc系统的主干成为数据库的最终版本并运行每个数据库对象的版本(我更喜欢更改脚本方法,但已经看到其他工作)。
答案 2 :(得分:0)
您还应该在数据库中有一个表来跟踪当前版本,以便不重复相同的更新,或者不按顺序执行 - 比如客户正在应用多个补丁。 SQL比较+1。
此外,SQL Compare将包装事务中的所有内容。你也可以做。他们创建一个临时表来保存所有错误,并在其中任何一个失败时回滚(iirc)。有助于您一次看到错误。如果数据库更新失败,您也可以存储它,然后让客户将其发送给您进行故障排除。
答案 3 :(得分:0)
在Visual Studio 2012中,转到SQL(菜单项) - >架构比较。单击左侧的Select Source,然后选择dev数据库。选择右侧的生产数据库。
然后单击生成脚本图标(更新图标旁边的,它看起来或多或少像是音乐图标)。这将生成更新脚本。您也可以取消不希望包含在脚本中的任何更改。它是......'免费'如果您碰巧拥有Visual Studio 2012