SQL Server 如何将开发数据库更改移动到生产数据库?

t9aqgxwy  于 2022-11-21  发布在  其他
关注(0)|答案(9)|浏览(177)

我一直在做一个项目,并通过了第一阶段。但是,需求最终发生了变化,我不得不添加新表并重做数据库中的一些foriegn键引用。
我的问题是我缺乏处理这种变化的知识,以过渡,然后生产数据库,一旦我得到了开发完成的开发数据库。
迁移数据库模式更改和维护数据库中的数据有哪些策略?
就我所知,这样做是打开SQL Server Management Studio,并开始手动添加表。我知道这可能是一个坏的方式来做,所以寻找如何正确地做,同时意识到我可能开始错了。

9udxz4iz

9udxz4iz1#

若要维护结构描述变更,您可以使用ApexSQL Diff(SQL Server和SQL Azure结构描述比较和同步行程工具),若要维护数据库中的数据,您可以使用ApexSQL Data Diff(SQL Server和SQL Azure数据比较和同步行程工具)。
希望这对你有帮助

  • 免责声明:我在ApexSQL担任支持工程师 *
5rgfhyps

5rgfhyps2#

你必须有一个叫做“KIT”的东西。显然,如果你正在维护某种类型的源代码管理,那么你在开发环境中所做的所有更改的脚本都应该在源代码管理配置工具中维护。
一旦你完成了所有的脚本/更改,你认为认证移动到下一个更高的环境。准备工具包有所有这些脚本在文件夹中(理想的分类为过程,表,函数,引导),然后有一个批处理文件,可以执行这些脚本在工具包中以特定的顺序使用OSQL命令行实用程序。
为UAT/登台/生产创建单独的批处理文件,这样您只需双击批处理文件即可在相应的服务器中执行工具包。请检查OSQL选项。
这样,您的所有环境都将同步!

3lxsmp7m

3lxsmp7m3#

我通常使用SQL Server Publishing Wizard之类的工具来生成更改的SQL脚本。(我不明白为什么),所以有一些体力劳动涉及通过脚本和删除的东西,不需要在那里。

请注意您不需要下载并安装此工具;您可以从VisualStudio中启动它。在服务器资源管理器中右键单击一个连接,然后在上下文菜单中选择“发布到提供程序”。

rn0zuynd

rn0zuynd4#

红门SQL比较和SQL数据比较一路。自从我的公司买了它,它节省了我大量的时间分期我们的数据库从开发到测试,验收到生产。
您还可以让它与脚本文件夹同步,以便在源代码控制系统中轻松集成。
http://www.red-gate.com

svmlkihl

svmlkihl5#

您可能需要使用Liquibase这样的工具:http://liquibase.org/

dly7yett

dly7yett6#

您可以使用Visual Studio 2015。请转到工具=〉SQL Server=〉新建架构比较

步骤1)选择目标数据库。单击比较选项。
步骤2)完成比较后,您可以单击图标生成脚本(Shift+Alt+G)

这将生成提交脚本。

步骤3)若要为数据库更改生成回滚脚本,只需交换步骤1中的数据库

1rhkuytd

1rhkuytd7#

有一些工具可以帮助你。
如果您有Visual Studio Team版本,请检查数据库项目(也称为DataDude,也称为Visual Studio Team for Database Professionals)See herehere
它允许您从dev/integration数据库生成一个模型,然后(在许多情况下,但不是所有情况下)自动创建脚本,这些脚本使用您对dev/integration所做的更改来更新您的prod数据库。
对于VS 2008,请确保您获得了GDR 2修补程序。

stszievb

stszievb8#

我们发现推送更改的最佳方式是像处理代码一样处理数据库更改。所有更改都在脚本中,它们在源代码控制中,它们是版本的一部分。在任何情况下,都不会将未编写脚本和未在源代码控制中的更改推送到prod。这样,您就不会意外地推送dev中的更改。但是还没有准备好被推送到prod。此外,您可以将prod数据恢复到dev box,并重新运行所有还没有推送到的脚本,这样您就有了新的数据,并保留了所有的dev工作。当您有表的查找值而您没有更改这些值时,这种方法也非常有效;我不想在其他东西移动之前被推到prod。编写插入脚本,并将其与版本的其余代码放在一起。
使用这些工具来做一个比较,看看脚本中是否遗漏了什么,这是很好的,但我永远不会单独依赖它们。

44u64gxh

44u64gxh9#

一个好的数据库设计工具(如Sybase Powerdesigner)将允许您创建对数据模型的设计更改,然后生成实现这些更改的代码。然后,您可以根据自己的选择存储和运行代码。当您继承了一个不是自己构建的数据库时,该工具还应该能够执行反向工程。
即使在一个有组织、有文档记录的环境中,找到开发和生产之间的所有更改通常也是困难的。Idera有一个用于SQL Server的工具,它将检测开发和生产数据库之间的结构差异,还有另一个工具,它检测数据中的更改。事实上,我经常使用这些工具来反其道而行之,将开发与生产同步,以启动一个新项目。

相关问题