在存储过程中生成数据库创建脚本

Ste*_*Bov 4 sql-server stored-procedures restore sql-server-2012

我希望自动擦除我们的测试环境,使其在每个冲刺结束时与生产保持一致。

就目前而言,这目前正在通过测试环境获取完整备份并使用移动和替换进行恢复来完成,但这占用了我们拥有的大部分空间。

目的是从头开始创建环境并仅填充所需的表。

我可以使用“右键单击 > 任务 > 生成脚本...”来创建数据库框架。

有没有办法从存储过程中创建该脚本,以便可以用于重新创建数据库

此外,我正在按原样处理这一点,但显然该脚本只会以其当前大小创建数据库,因此一旦生成脚本,就需要修改所有文件大小

为任何帮助干杯

Ken*_*her 5

您可以使用多种方法。按难度排序(恕我直言,从最容易到最难)

  • 手动创建(使用生成脚本)一个只有结构的数据库,只用复制所需的数据填充它,然后备份/恢复它。(你也可以只做结构和编码数据副本)
    • Up side - 这是最简单的编码方法,应该相当快
    • Down side - 这需要随着源数据库的代码/数据的变化而不断维护。
  • 手动创建脚本并让 SP 运行它们(可能使用动态 SQL)并复制数据。
    • Up side - 也相当容易实现,不需要您将复制的额外“模型”数据库。
    • Down side - 还需要不断的维护
  • Powershell - 您使用 POSH 脚本来创建新数据库、生成脚本并运行它们。
    • Up side- 这是最强大的方法。它不需要太多维护,您甚至可以找到其他人编写的脚本作为起点。
    • Down side- 这要求您至少了解一点 Powershell。(这也可能被认为是好的一面)
  • OLE 自动化程序 - sp_Create 等。这将是最困难/最复杂的方法(至少知道一点点和 PoSH),但一旦编写也不需要那么多维护。
    • Up Side - 最少的维护,它都可以在 SQL 中运行
    • Down side - 更难的代码,您可能找不到已经构建的脚本,您必须启用 OLE 自动化程序(安全风险,如果最小的话)。

我可能应该注意到,我最初的想法是您希望它可以重现。如果您只需要做一次,那么@MaxVernon 是正确的。截断不需要数据的表(或删除不需要的数据)并缩小。您可能需要一次执行此操作,具体取决于您对空间的限制程度。