我经常不得不将数据从我们的生产环境复制到我们的测试环境。它们处于完全不同的环境中,其中 prod 位于我必须通过 VPN 进入的防火墙后面,因此我无法使用链接服务器。提交工单让 DBA 执行此任务通常需要很长时间,因此我正在尝试找到一种系统化的方法来完成此任务。
根据选择查询创建一组插入脚本似乎是最好的,并且可以解决问题。这会起作用的原因是这些通常是一次性复制脚本,它们是不太大的静态/查找表。
例如,如果我有一个名为“Cars”的表,并且它有一个 CarId 和 Description 列,那么脚本将是:
select 'insert into Cars (CarId, [Description])
values (' + cast(CarId as varchar) + ', ''' + [Description] + ''')'
from Cars order by CarId
在我的测试数据库中,我可以在运行上述插入脚本之前简单地炸掉表。
我的 prod sql 用户还具有对所有表的选择访问权限INFORMATION_SCHEMA
,所以我想知道是否有人遇到过编写上述查询的系统方法。很多时候,我需要复制的表有很多列,并且日期时间、varchar 等的转换是不同的......
编辑:哦,我忘了补充说我的 prod 用户没有执行存储过程或函数的权限