【发布时间】:2008-10-28 23:26:53
【问题描述】:
我们在将开发 SQL 2005 数据库迁移到网站托管公司的共享网络服务器上时遇到了一个常见问题。
理想情况下,我们希望系统能够将数据库结构和数据作为精确副本进行传输。
这通常可以通过恢复备份来实现。但是因为它们是共享的 SQL 服务器,所以我们无法恢复备份——我们无法访问实际的机器。
我们可以生成一个脚本来创建数据库结构,但是我们不能通过菜单项任务/导入数据进行数据传输,因为我们可能会违反外键约束,因为表是按照与数据库冲突的顺序导入的架构。此外,如果将索引设置为自动生成,则它们可能不会被复制。
因此我们留下了一个混乱的操作:
- 在 SQL 2005 中创建一个脚本,以生成 SQL 2000 格式的数据库。
- 运行脚本以在 SQL 2000 中创建 SQL 2000 数据库。
- 在 SQL 2000 中创建一个脚本,生成没有索引和外键的数据库结构。
- 在生产服务器上运行此脚本。您现在有了一个可以将数据上传到的数据库结构。
- 使用 SQL 2005 将数据与任务/导入数据一起传输到生产服务器。
- 使用 SQL 2000 生成一个脚本,该脚本使用索引和键创建数据库。
- 仅复制生成索引和外键的命令。这些位于表创建命令之后。注意:在 SQL 2005 中,索引和外键是一体生成的,不能轻易分开。
- 在生产数据库上运行此脚本。
瞧!上载数据库时,所有数据和键/约束都已到位。多么混乱且容易出错的系统。
还有更好的吗?
【问题讨论】: