代码之家  ›  专栏  ›  技术社区  ›  Christopher

如何使用SSIS复制和覆盖SQL Server 2005中的数据库?

  •  4
  • Christopher  · 技术社区  · 15 年前

    我必须错过一些非常简单的东西!

    我的开发环境中有一个名为Project的数据库。 我的测试环境中有一个名为Project_at的数据库。

    我已经创建了一个ssis包,它成功地将我的数据库从项目复制到项目_at。我确信这消除了大多数权限和配置问题。

    现在,我想重新创建这个包,这一次允许它覆盖目的地,这是项目代码。这仅仅是因为有时我想单击Microsoft SQL Management Studio中的一个按钮,将新的数据库架构、数据、用户和所有内容推送到我的测试环境中。我想覆盖数据。

    所以我像以前一样创建了这个包,但这次我将已经存在的数据库名称指定为“目标数据库”,并选择了一个名为“删除目标服务器上同名的任何数据库,然后继续数据库传输,覆盖现有的数据库文件”的单选按钮。

    我点击下一步,它告诉我什么?

    “目标中已存在数据库名称”

    嗯,我知道!我刚告诉过你我想改写它!

    我该怎么做?

    4 回复  |  直到 12 年前
        1
  •  2
  •   John Sansom    15 年前

    不确定我是否缺少该点,但为什么在部署步骤之前不使用任务删除现有数据库?

    也许您可以限定您在SSIS包中使用的SSIS组件任务。

    干杯,约翰

        2
  •  2
  •   Eric Ness    15 年前

    可以将执行SQL任务添加到控制流中以除去数据库。只需将SQLStatement属性设置为

    DROP DATABASE Project_UAT
    

    执行此步骤后,项目数据库的新副本将不必覆盖旧副本。

        3
  •  1
  •   Brock Adams    13 年前

    我有这个问题,因为我之前删除了数据库。数据库不在目标文件夹中,但SQL Server 2008仍然认为它在其中。刷新不起作用。而且,SQL Server不接受“在目标服务器上删除任何数据库…”的选择,它只是抱怨数据库已经存在。

        4
  •  0
  •   ae39    15 年前

    伙计们,这是一个常识性的解决方案。很多复杂的事情都白费了。

    备份要复制到的目标数据库并删除目标数据库。

    打开复制数据库向导并执行步骤。

    使用分离和附加方法。

    当您到达配置目标数据库时,使用选项if destination database exists在目标服务器上选择drop database,并使用相同的名称。

    现在,它将继续进入下一个屏幕。

    但是,只有在启动向导之前先删除目标数据库,这才有效。

    我可能错过了什么,但这对我很有用。