我们已将生产数据库 (SQL Server 2000) 的副本升级到 SQL Server 2008,并对存储过程进行了一系列修复和更改。现在我想将当前数据从生产环境(SQL Server 2000)中复制出来,并将其推送到新的 SQL Server 2008 中,并将生产应用程序指向新的应用程序。所有表模式均未更改。
我知道将所有表编写为文件的插入脚本是一种可能性。这是最好的方法吗?还是有更好的方法?外键会成为问题吗?
我们已将生产数据库 (SQL Server 2000) 的副本升级到 SQL Server 2008,并对存储过程进行了一系列修复和更改。现在我想将当前数据从生产环境(SQL Server 2000)中复制出来,并将其推送到新的 SQL Server 2008 中,并将生产应用程序指向新的应用程序。所有表模式均未更改。
我知道将所有表编写为文件的插入脚本是一种可能性。这是最好的方法吗?还是有更好的方法?外键会成为问题吗?
以下是您可以做的几件事,所有这些都有优点和缺点:
手动脚本和链接服务器:
设置链接服务器连接并使用 INSERT INTO
INSERT INTO server2008.databaseName.schemaName.TableName (Col1, Col2, ..., Coln)
SELECT Col1, Col2, ..., Coln
FROM server2000.databaseName.schemaName.TableName
注意这些的执行顺序。确保首先迁移没有引用的表以避免外键问题
您甚至可以在某些表上临时禁用外键和身份插入
ALTER TABLE MyTable NOCHECK CONSTRAINT FK_Constraint
SET IDENTITY_INSERT tableName ON
-- INSERT STATEMENT HERE
SET IDENTITY_INSERT tableName OFF
ALTER TABLE MyTable CHECK CONSTRAINT FK_Constraint
导出数据向导
Tomasito 已经建议了——只要确保以正确的顺序执行脚本。没有引用的表的第一个脚本,而不是仅引用先前插入的表中的数据的表等等……。
第三方工具
其中有许多可以为您完成这项工作。如果这是一项一次性任务,您可以使用试用版完成工作。我知道的一对是 ApexSQL Data Diff、SQL Data Compare、AdeptSQL Diff。
在 Microsoft SQL Server Management Studio 中,右键单击数据库Import
和Export
选项。另一种方法是使用 SQL Prompt:SQL Compare(付费工具)。您必须尝试使用您的数据集并决定选择更适合您的选项。