我想做的是将生产数据库中的数据副本安排到我的开发/测试数据库中。
就架构而言,开发/测试数据库将比生产数据库更新,但生产数据库具有当前数据。我有点纠结,因为我需要根据生产规模数据测试我的数据库更改,拥有当前数据会非常有帮助。
我在生产和开发环境中使用 SQL Server 2008 R2 Standard;有没有一种方法可以在我的开发服务器上创建一个作业,以只读方式从我的生产数据库中“吸取”数据?我想要一个可以批量复制表数据、忽略丢失的列并忽略目标表中的任何约束的脚本。我真正需要一个为一个表执行此操作的脚本,我可以修改它以适合我的表并复制它以运行我的所有表。我遇到的问题是发现任何与此类似的东西。
这是对我最后一个相同性质的问题的后续跟进;从那以后,我将我的数据库纳入源代码控制,我更喜欢它。问题是我在我的开发服务器上仍然面临一个过时的数据问题,所以我想找到一种方法来安排更新。
我愿意接受替代方法来实现这一点,但它需要是我可以按计划运行的东西,并且我可以使用记事本和/或 SSMS 或标准版 SQL Server 提供的其他工具构建的东西。
以下是我的建议:
如果您还没有这样做,请为您的生产数据库创建一个定期备份过程。为了简单起见,将其设为完整备份并包含所有数据库对象(表/模式/数据/用户)。Microsoft 网站上有很多关于如何实现此目的的信息。
当您需要更新开发环境时,将生产备份恢复到开发中,然后使用为生产更改记录的方法实施您需要测试的迁移(表、过程、数据)。
测试,知道您不仅要测试代码更改,还要测试迁移策略,以便将更改部署到生产环境。您也在测试您的数据库备份和恢复 (DR) 策略。
请注意,这可能意味着您有 2 个开发数据库,一个用于实际开发,一个用于集成/QA/UAT 测试。
对于这种情况,SSIS 可能是您最好的工具。创建一个执行复制的包并使用 SQL 代理对其进行调度。您可以非常轻松地将数据从一个环境复制到另一个环境。您可以根据需要将其设置为重定向或忽略复制操作中的错误和不一致。
我意识到这不是记事本和 SSMS,但 SSIS 包含在 SQL 2008 R2 标准中,并且(IMO)非常值得至少熟悉一下。
我觉得最好的方法是: