代码之家  ›  专栏  ›  技术社区  ›  Dr. Rajesh Rolen

替换/重命名联机数据库

  •  0
  • Dr. Rajesh Rolen  · 技术社区  · 15 年前

    我有一个名为mydb的MS SQL Server 2005数据库,它正被来自不同位置的7个应用程序访问。

    我已经创建了名为mydbnew的副本,并通过在存储过程中应用主键、索引和更改查询对其进行了优化。

    现在我想从新数据库“mydb new”替换旧数据库“mydb”

    请告诉我最好的方法是什么。我虽然要在web.config中进行更改,但是访问它的所有应用程序对我来说都是不可访问的,不能继续。

    请向我提供专家意见,以便我可以在最短时间内替换数据库,而不影响其他数据库及其所有应用程序。

    我说用新数据库替换旧数据库的意思是,我想将旧数据库“my db”重命名为“my db old”,然后将新数据库“my db new”重新命名为“mydb”

    谢谢

    1 回复  |  直到 15 年前
        1
  •  1
  •   JonVD    15 年前

    您的计划将起作用,但它确实具有很高的风险,特别是因为我假设这是一个用户主动更改数据的系统,这意味着您的拷贝中不会有相同级别的更新内容,除非您在上线前立即进行剪切。您最好的选择是在低流量/维护期间将更改小心地迁移到实时系统中,并在完成后进行广泛的测试。在执行此操作之前,或之前提到的方法,备份 一切 .

    您在上面描述的所有更改都可以对联机数据库进行,而无需实际将其关闭。但是,其中一些活动将改变数据受某些操作(对存储过程的更改)影响的方式,这意味着在转换期间,系统或系统的行为可能无法预测,因此您应该在日常操作或取下来作为维护窗口。

    SQL Server附带了一个从数据库中生成脚本文件的函数,您也可以手动执行此操作,但请单击要编写脚本的对象,然后选择“脚本”->创建选项。根据必须进行的更改的数量,编写整个新数据库的脚本(通过单击新数据库并选择 任务 -gt; 生成脚本… 选择需要的项目)。

    如果只想编写需要单独添加的新内容的脚本,只需单击要编写脚本的对象,选择 脚本 <object> 作为 ->然后选择 删除并创建 如果要终止原始版本(如替换存储过程)或选择 创造 如果你添加新的东西。

    一旦您拥有了作为脚本添加/更新的所有内容,那么就可以对新数据库执行这些内容了。这是你备份的部分 一切 . 一旦你快乐的所有东西都被备份了,并且系统处于维护或低效率时期,你就可以执行这个脚本。执行此操作时可能会出现一些问题,您需要尽快解决这些问题(通常只是“已存在”错误,这就是为什么删除和创建脚本是好的),如果出现任何问题,请恢复备份并重试(在了解发生的情况和方法后)o修复它)。

    如果你做了很多改变,这可能是一个漫长的过程,或者可能只需要几分钟,你就需要适应如果事情出了问题,并确保用备份/广泛的祈祷来覆盖你自己。祝你好运!

    推荐文章