替换/重命名在线数据库

时间:2010-11-29 12:28:11

标签: sql database sql-server-2005

我有一个名为mydb的ms-sql server 2005数据库,来自不同位置的7个应用程序正在访问该数据库。

我创建了名为mydbNew的副本,并通过在存储过程中应用主键,索引和更改查询来对其进行调整。

现在我想从新的db“mydbnew”

替换旧的db“mydb”

请告诉我这样做的最佳方法是什么。我虽然在web.config中进行了更改但是访问它的所有应用程序都无法访问我,无法继续使用。

请提供专家意见,这样我就可以在最短的时间内更换数据库,而不会影响其他数据库及其所有应用程序。

我说新db更换旧db的意思是我想将旧db“mydb”重命名为“mydbold”,然后想将我的新db“mydbnew”重命名为“mydb”

谢谢

1 个答案:

答案 0 :(得分:1)

您的计划可行,但确实存在高风险,特别是因为我假设这是一个让用户主动更改数据的系统,这意味着您的副本将不会具有相同级别的更新内容,除非您在上线之前做一个切割。您最好的选择是在低流量/维护期间将更改小心地迁移到实时系统中,并在完成后对其进行全面测试。在执行此操作或之前提到的方法之前,请备份所有内容

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

Sql Server附带了一个从您的数据库中创建脚本文件的功能,您也可以手动执行此操作,但单击要编写脚本的对象并选择脚本 - >创建选项。根据您必须进行的更改量,编写整个新数据库的脚本可能是值得的(通过单击新数据库并选择任务 - > 生成脚本... 并选择所需的项目。

如果您想要单独编写需要单独添加的新内容,那么只需单击要编写脚本的对象,选择脚本<object> - &gt;然后选择 DROP和CREATE ,如果你想要杀死原始版本(比如替换存储的proc),或者选择 CREATE ,如果你添加了新的东西。

一旦你拥有了想要添加/更新为脚本的所有内容,那么就可以针对新数据库执行该操作了。这将是您备份所有内容的部分。一旦您的所有内容都得到备份并且系统处于维护或低交换期,您就可以执行该脚本。执行此操作时可能会出现一些问题,您需要尽快修复这些问题(通常大多只是'已经存在'错误,这就是为什么删除和创建脚本都很好)如果出现任何问题,请恢复备份和再试一次(在弄清楚发生了什么以及如何解决之后)。

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