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