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