我们已将生产数据库(SQL Server 2000)的副本升级到SQL Server 2008,并进行了大量修复和修复。更改存储过程。现在,我想将当前数据从生产中复制(SQL Server 2000)并将其推送到新的SQL Server 2008,并将生产应用程序指向新的应用程序。所有表模式都没有改变。
我知道将所有表脚本化为文件的插入是一种可能性。这是最好的方法吗?还是有更好的方法?外键是否会成为问题?
答案 0 :(得分:2)
以下是您可以做的几件事,所有这些都有优点和缺点:
手动脚本和链接服务器:
设置链接服务器连接并使用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。
答案 1 :(得分:0)
在Microsoft SQL Server Management Studio中,右键单击数据库以及Import
和Export
选项。另一种方法是使用SQL Prompt:SQL Compare(付费工具)。您必须尝试使用数据集,并选择更适合您的选项。