我有几个生产数据库,我也有测试环境。我无权执行备份和恢复操作。实际上我正在使用向导生成脚本(模式+数据)并在另一个数据库上运行 sql。有没有办法通过脚本(SQL、PowerShell、C# 等)来做到这一点?理想情况下,我可以将所有数据库对象从生产中移动到测试中吗?例如,脚本可能是通用的,输入参数可能是数据库名称?生成脚本的问题是两个 => SQL 可能太大而无法在 sql manager 中打开,而且每次运行向导都很耗时,因为我经常需要生产数据。
基于该通用脚本或作业的最终愿景是我有一个 Web 仪表板,我可以在其中单击数据库或拥有一组命令 shell 脚本,并且数据库将复制到我可以修改数据的测试环境。
任何想法 ?
您可以使用 SMO 从 Powershell、C# 或 VB 编写数据库架构脚本。可以在此处找到有关该主题的精彩文章。
关于数据,我认为最简单的选择是使用 BCP 将每个表的数据通过管道传输到文件中,然后再次使用 BCP 将其导入目标数据库。我强烈建议使用本机格式(
-n
选项),因为它极大地简化了流程。您还可以使用传输 SQL Server 对象任务,该任务用于将一个或多个 SQL Server 对象传输到相同或另一个 SQL Server 实例上的不同数据库。
这使您可以选择要传输的不同类型的对象。您可以选择表、视图、存储过程、用户定义的函数等。不仅如此,您还可以选择这些类型的对象的组合来传输,甚至选择特定对象类型的特定对象。
请参考这篇MS文章了解如何实现:
传输 SQL Server 对象任务
同时在 SSIS 中传输数据库任务和传输 SQL Server 对象任务