Asp.net 如何将数据从SQL Server传输到Informix,反之亦然

Asp.net 如何将数据从SQL Server传输到Informix,反之亦然,asp.net,performance,ssis,sql-server-2012,informix,Asp.net,Performance,Ssis,Sql Server 2012,Informix,我想将表数据从sqlserver传输到Informix,反之亦然 传输应按计划运行,有时在用户执行特定操作时运行 我通过delete and insert transactions执行此操作,在15分钟到30分钟之间通过web执行此操作需要很长时间 考虑到性能,如何以简单的方式执行此操作 说我有 SQL Server中的休假表,并希望将所有更新的数据传输到Informix中的休假表 及 Informix中的Permission表,并希望将所有更新的数据传输到SQL Server中的Permis

我想将表数据从
sqlserver
传输到
Informix
,反之亦然

传输应按计划运行,有时在用户执行特定操作时运行

我通过
delete and insert transactions
执行此操作,在
15分钟到30分钟之间通过web执行此操作需要很长时间

考虑到
性能
,如何以简单的方式执行此操作


说我有

SQL Server中的
休假
表,并希望将所有更新的数据传输到Informix中的
休假

Informix中的
Permission
表,并希望将所有更新的数据传输到SQL Server中的
Permission


一些想法:

  • 列添加到源表,将其默认值设置为
    0
    (您可以使用
    0/1
    而不是
    false/true

  • 从源表中选择数据
    已传输=0

  • 传输数据更新所选源行后,将其
    已传输
    设置为
    1

  • date\u start
    date\u stop
    等字段创建表
    syncro\u info
    。如果您发现有
    日期为空的记录,则表示您正在传输数据。这将防止您两次同步数据


  • 免责声明:我不是SQL Server DBA。然而,我作为Informix DBA已经超过十年了,可以就其性能提出一些建议

    撇开免责声明不谈,听起来您已经有了一个功能性应用程序,但性能是一个阻碍因素,而这正是您主要寻求建议的地方

    有一些技术信息可能有助于了解,但如果没有这些信息,我将对您的环境和应用程序做出以下假设。请评论或编辑您的问题,如果我在任何这些错误

  • 数据库服务器版本。从标记中可以看出,您正在使用SQL server 2012。但是,我无法确定Informix服务器和版本。我假设您运行的是至少IDS11.50或更高版本
  • 当前如何交换数据。您是否直接从.NET应用程序连接到Informix?我假设SQL Server就是这种情况,并且对Informix连接也会做同样的假设
  • 表结构。我想你在表格上有适当的索引。在Informix端,
    dbschema-d*dbname*-t*tablename*
    将给出基本模式
  • 如果您没有尝试将数据导出到CSV,并且只要您没有任何法规遵从性问题,我建议您从逗号分隔的文件加载数据。(Informix通常处理管道分隔的文件,因此您需要将SQL Server端的分隔符调整为管道
    |
    ,或者在Informix导入端)。在Informix端,这将是一个

    LOAD FROM 'source_file_from_sql_server' DELIMITER '|' INSERT INTO vacation (field1, field2, ..)
    
    为了可重用性,我建议将其放在存储过程中。只需将load语句包装在
    开始工作中
    提交工作以保持事务完整性。提出了一些跟踪变化的方法。如果在Informix中将数据传输到休假表和SQL Server中的权限表之间存在任何关联,我将提出另一个选项,即向
    休假表添加触发器,以便将所有新值写入临时表

    使用存储过程中的导入逻辑,可以按需启动导入:

    EXECUTE PROCEDURE vacation_import();
    

    您还提到需要安排导入,这可以通过Informix的“”来完成。使用此功能,您将创建一个定期执行的计划任务。如果您以前没有使用过此功能,请使用。您还需要对CSV文件进行整理。这可以通过
    system()
    调用来解决,您可以通过Informix中的存储过程进行调用。

    Informix服务器版本是:
    IBM Informix Dynamic server version 12.10.FC3
    您能解释一下如何将
    'source\u file\u from\u sql\u server'
    ,如何生成这样的文件以及如何读取。来自sql server的
    源文件\u
    只是来自sql server的CSV文件。下面是一个例子:。将CSV从一台DB服务器传送到另一台DB服务器实际上取决于您的网络—可以通过共享文件系统。“读取”it部分将完全由Informix DB使用存储过程来处理,我称之为
    vacation\u import
    。谢谢,但仍然有点困惑,您的意思是
    “源文件来自sql\u服务器”
    是从sql server生成的CSV路径吗?从informix到sql server的反面是什么?很抱歉,您是对的。sql server中的源文件是sql server生成的CSV的完整路径。对于需要反馈到SQL Server的数据,可以遵循相同的模式。您可能希望将传出数据(Informix->SQL Server)与传入数据(SQL Server->Informix)转储到一个单独的目录中。我从未讨论过如何在SQL Server上触发导入,这在很大程度上取决于两个数据库系统的连接方式。你是对的,我没有意识到这一限制。但是,由于您使用的是最新版本的Informix,加载外部数据的另一种方法是将CSV文件映射到
    外部表
    ,然后使用
    合并
    命令来处理更新/插入。参见Jonathan Leffler对类似问题的回答,关于SO:。他是Informix方面的绝对专家,他的解决方案似乎非常有用