Sql server 如何仅备份表数据,用于升级SQL Server 2000的移动-->;SQL Server 2008?

Sql server 如何仅备份表数据,用于升级SQL Server 2000的移动-->;SQL Server 2008?,sql-server,tsql,sql-server-2000,Sql Server,Tsql,Sql Server 2000,我们已将生产数据库(SQLServer2000)的一个副本升级到SQLServer2008,并对存储过程进行了一系列修复和更改。现在,我想将当前数据从生产环境(SQLServer2000)中复制出来,并将其推送到新的SQLServer2008中,并将生产应用程序指向新的应用程序。所有的表模式都保持不变 我知道,将所有表作为插入文件编写脚本是一种可能性。这是最好的方法吗?还是有更好的方法?外键会有问题吗?在Microsoft SQL Server Management Studio中右键单击数据库

我们已将生产数据库(SQLServer2000)的一个副本升级到SQLServer2008,并对存储过程进行了一系列修复和更改。现在,我想将当前数据从生产环境(SQLServer2000)中复制出来,并将其推送到新的SQLServer2008中,并将生产应用程序指向新的应用程序。所有的表模式都保持不变


我知道,将所有表作为插入文件编写脚本是一种可能性。这是最好的方法吗?还是有更好的方法?外键会有问题吗?

在Microsoft SQL Server Management Studio中右键单击数据库,然后选择导入和导出选项。另一种方法是使用SQL提示符:SQL比较(付费工具)。您必须尝试使用数据集,并决定使用选项更适合您。

以下是您可以做的几件事,所有这些都有优点和缺点:

手动脚本和链接服务器:

设置链接服务器连接并使用“插入到”

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数据差异、SQL数据比较和AdeptSQL差异。

我最后做的是编写SP脚本,并在完整的数据库备份上重新应用这些SP。但我很高兴知道下次还有其他的选择要考虑。