【问题标题】:Rename live production Database重命名现场制作数据库
【发布时间】:2016-02-18 10:47:10
【问题描述】:

我在 SQL Server 中有一个名为“XYZ”的数据库。现在我想把它改成“ABC”。

问题是我的 SSRS 报告和 SSIS 包连接到 XYZ。 我构建 SSRS 报告和 SSIS 的所有内容现已上线,用户 24/7 全天候使用此报告。

有什么方法可以在最短/没有任何服务器/数据库停机时间的情况下重命名数据库?

谢谢

【问题讨论】:

  • 如果应用程序中引用了数据库名称怎么办
  • 但我的所有报告服务配置都与名为 XYZ 的数据库连接
  • 您的报告应该引用一个共享数据源,而该共享数据源引用一个数据库。如果是这种情况,只需更新共享数据源。如果数据库名称在您的实际报告中,您应该在 RDL 上进行搜索和替换
  • “当然,我们可以做到这一点。工作估计是 Z。我通过查看该数据库 (X) 的所有消费者以及修复其中一个消费者所花费的时间得出了这一点(Y)所以 X * Y。不包括在测试和变更控制中。我希望它指出,鉴于成本效益比,我坚决反对将公司资金用于此,并且更愿意将其用于实现功能 FooBitz "
  • 也许同义词可以帮助你?

标签: sql-server reporting-services ssis


【解决方案1】:

这是 Rube Goldberg 的方法:

  1. 创建一个新的空数据库,该数据库具有您最终打算将当前数据库重命名为的名称(在您的示例中为“ABC”)
  2. 在新数据库中为 SSIS 包和使用三部分名称作为目标的 SSRS 报告引用的每个对象创建同义词。例如:create synonym [ABC].[dbo].[myTable] for [XYZ].[dbo].[myTable]
  3. 更新您的包和报告以指向新数据库。
  4. 在黑暗的掩护下,将 ABC 重命名为 ABC_drop,将 XYZ 重命名为 ABC。
  5. 删除 ABC_drop。

它不会消除停机时间,但确实让您有时间更新所有报告和 ETL 包引用。在第 5 步之前回滚也很简单。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-13
    • 2010-09-13
    • 2016-07-06
    • 1970-01-01
    • 1970-01-01
    • 2012-09-11
    相关资源
    最近更新 更多