集成两个SQL数据库之间的数据最好的方法?

我正在写一个事件日历和日历数据,我需要从另一个数据库中拉,并承诺矿之前进行一些更改。

什么是这个,你会提出一些基本的方法?

此数据不是超敏感或需要企业解决方案。

我想到写它运行我的服务器上,将每隔一小时检查外部数据库的更改,如果有任何一项服务 - 它们加载到我的数据库表。 有没有更简单的方法吗?

谢谢

--------------解决方案-------------

有一堆选项。 2很容易的解决方案来实现的:

  1. 您可以使用SSIS(SQL Server集成服务)将数据传输到从数据源
  2. 您也可以使用SQL Server的复制,并建立了一个发布/订阅的情况。

你可以只写一个存储过程,检查是否有新的数据在外部数据库,让您必要的修改,然后把它结束了。

然后,您可以建立一个执行该存储过程,并将其设置为每小时的基础上运行SQL Server代理作业。

我同意科迪,或1和2他的回答中有使用。 虽然也许有点复杂,你的目的

使用存储过程 - 推荐的方法 - 可能需要服务器第一个链接。

看来,这或许可以供你使用,无论是在运行代码的SP,手动或设置在SQL Server代理计划的作业

http://msdn.microsoft.com/en-us/library/aa213778(SQL.80).aspx

链接服务器添加到其他服务器,您可以查询从它想:

select * from [LinkedServer].dbname.dbo.Table

这样一来,你永远使用最新信息,而且也没有必要写一个脚本或存储过程,确定“有什么新的”或“该行已经改变”。

您的选择有所依赖的SQL Server上正在运行的味道。 但是,您的集成的具体要求更为重要。 单向集成的最简单和最有效的方法是从源头上加载新的前删除目标每一个日历事件。 这可能是不够好,如果没有很多的事件同步,就像如果你没有加载过去的事情都没有。 但是,如果你需要保持同步状态的轨道,事情变得更加复杂和工具,开始产生实际效果。 还有在这种融合两个阶段:

  1. 从源提取更改的数据和
  2. 转换和加载数据到目标

提取变化

SQL2008的每一个版本都有一个特别有针对性的进行同步的情况有了新的变化跟踪功能。 变化的跟踪是从仅由SQL Server 2008企业版支持变更数据捕获不同。 如果源数据库运行SQL 2008年,我肯定会看变更跟踪第一。 主要的好处是,你并不需要建立元数据处理变更的数据检测,如存储最后载荷的时间戳和它比较事件修改时间戳等你should'n需要做任何DDL更改用户表来跟踪变化,除了打开更改跟踪:

ALTER DATABASE AdventureWorks2000 SET CHANGE_TRACKING = ON
(CHANGE_RETENTION = 2 DAYS, AUTO_CLEANUP = ON);
GO
USE AdventureWorks2000;
GO
ALTER TABLE Person.Person ENABLE CHANGE_TRACKING
WITH (TRACK_COLUMNS_UPDATED = ON);
GO

如果你不能使用更改跟踪,我建议使用时间戳或版本号,而不是填充一个单独的变化表触发器。 触发器可能是削减在这里,但我还是建议,以避免他们:)你可能在已经数据库模式所需的时间戳。

设置复制是做变更数据捕获了一个有趣的方法。 事实上,在技术上它是前体疾控中心SQL2008企业版中。 我还没有用于CDC自己的复制,但例如在这本书的作者都使用它的好经验。

转换和加载

使用SQL代理来安排SSIS包。 如果你每次都做的负荷变化满载相反,这是你所需要的。

另一种选择是安排一个存储过程,但处理之类的东西记录错误不会那么简单。 我的经验是,发展SSIS包是很多比使用T-SQL更快,尤其是如果将参与连接的服务器。

SQL Server Express的问题

SQL Server Express的(2005/2008)没有SQL代理,只能作为一个复制的用户。 我通常都结束了对SQL Express的集成作业编写一个Windows服务,但有一个外部调度运行存储过程可能只是工作不够好。 编写和调度存储过程很可能是很多比开发一个服务更快。

SQL Server Express的2008年确实有SSIS运行时,但我并不确切地知道它是多么的有限,因为并非所有的功能都是由它的支持。 导入/导出向导不工作,但是。

分类:SQL服务器 时间:2015-03-15 人气:0
本文关键词: SQL服务器
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.418 (s). 10 q(s)