1

我知道这应该是 db 101,但它对我来说并没有那么清晰。我正在使用 SQL2005 express,我想将数据从数据库 A 复制到数据库 B。DatabaseB 已经包含现有数据 - 它甚至可能包含 pk 已更改或不存在的数据 - 例如:

数据库 A pk1 = 桃子 pk2 = 苹果

数据库 B pk1 = 桃子 pk2 = 橙子 pk3 = 苹果

现在 A 和 B 都有与 pk 相关的相关表。

从历史上看,我会编写一个从 A 中选择数据并通过其插入/更新过程(使用 .NET)将其复制到 B 的应用程序,但是这非常麻烦,尽管有一些优点是我可以有一个允许您选择的下拉列表A 复制 - 如果 B 存在则复制到,或者说添加新的 - 例如:

(下拉 - 选择来源)桃苹果

(下拉 - 选择目标)-新-桃子橙子苹果

我打算使用 SSIS,但目标数据库只有 SQL Express,所以这不可用,我也没有时间学习它(我过去经常使用 dts,但不是这个较新的工具)。在 SQL2000 中,我只会使用 DTS,但现在使用更复杂的架构,我什至不确定我是否会相信它。

有什么建议还是我应该继续编写我的自定义应用程序来将数据从 A 迁移到 B?

我期待着大家的建议——我很想继续走一条我认为是最好的方法的道路:-)

4

4 回答 4

1

如果服务器在同一网络上,请添加链接服务器(在网上交易 sql 书籍中查找)。然后,您可以跨两台服务器运行查询。

SQL Server 2005 Express 很糟糕,它不包含 SSIS。但是,您也可以使用 BCP(批量复制,也可以在在线交易 sql 书籍中查找)将数据复制到目标服务器上的不同表中。它可能在您的路径中,因此您可以从 dos 键入 bcp /? 获取选项列表。一旦数据位于目标服务器上的表中,您就可以对其运行查询。

您确实需要在键之间创建映射。我不知道你是如何从桃子/苹果中得到桃子/橙子/苹果的。毫无疑问,有一些业务逻辑。一旦您链接服务器或在一台服务器上获取数据。您可以使用业务逻辑将旧主键映射到新键。或者你手动填写的映射表(oldkey, newkey)或(oldkey1, oldkey2, newkey1, newkey2, newkey3)。

于 2008-10-17T16:21:03.117 回答
1

sql 2008 有一个有趣的功能,称为更改数据捕获,这可能对您来说很有趣 http://blog.benhall.me.uk/2007/06/sql-server-2008-change-data-capture-cdc.html

于 2009-05-25T15:53:43.890 回答
0

您可能会查看合并复制 - http://msdn.microsoft.com/en-us/library/ms165713(SQL.90).aspx

它总是单向推动吗?A->B?

作为说明,如果你能获得 SSIS,你应该花一点时间来学习它。它比 DTS 恕我直言。

于 2008-10-20T18:39:39.827 回答
0

不太熟悉 SQL Server Express 的局限性,但你能备份吗?然后作为另一个数据库导入?

于 2008-10-17T17:15:19.590 回答