【发布时间】:2011-04-27 17:19:25
【问题描述】:
使用不同架构将数据从一个数据库 (sql server 2008) 传输到另一个数据库 (sql server 2008) 的最佳方法是什么?
有这样的程序吗?
感谢 4 你未来的回答
最好的问候
【问题讨论】:
标签: c# asp.net sql-server-2008 synchronization data-transfer
使用不同架构将数据从一个数据库 (sql server 2008) 传输到另一个数据库 (sql server 2008) 的最佳方法是什么?
有这样的程序吗?
感谢 4 你未来的回答
最好的问候
【问题讨论】:
标签: c# asp.net sql-server-2008 synchronization data-transfer
将源服务器链接到目标服务器。 然后,您可以从目标服务器执行您自己的查询,例如
INSERT INTO Destination_Table (col1, col2, col3)
SELECT colA, colB, colC
FROM [SRC_MACHINE\SRC_SERVER].Source_Database.dbo.Source_Table
如果您对编写查询感到满意,您可以将所有数据转换(如果需要)包含在嵌套的 SELECT 中,并使用 JOIN 和其他东西来使所选数据结构适合目标架构。
即使两台服务器都运行 SQL Server Express(未随 SSIS 提供)也可行。 Documentation on Linking Servers
【讨论】:
我会使用 SSIS(附带 sql server)来执行此操作。然而,这将不是一件容易或快速的任务。从一种模式映射到另一种模式可能非常耗时,而且您几乎肯定会发现从一种模式到另一种模式不适合您必须处理的数据。例如,如果该字段在第一个模式中是 varchar,而在第二个模式中是 datetime,那么您几乎肯定必须排除错误值(例如“ASAP”),这可能是一个问题,尤其是当该字段是必填字段时。事实上,您还必须处理这些类型的错误——如果它不是必需的,而现在是,那么对于当前为 null 的记录,您在其中放置了什么值。当字段大小不匹配时,你会怎么做,你可能不得不截断数据。如果您有不同的查找值,则需要一个转换表。您可能需要一个转换表来关联新旧 id 字段,以便您可以正确加载子表。这是一项非常复杂的任务。
【讨论】:
根据您的需求有多复杂,您可能需要考虑使用SSIS。
【讨论】: