我现在要做一个程序,用SQL Server数据库,其中要用到sybase数据库中的部分数据,sybase数据库的数据又是经常变化的,我用什么方法来保证两个数据库的数据同步?

解决方案 »

  1.   

    用VB或者DELPHI等开发工具引用SQL SERVER的DTS包,这样可以实现数据的筛选(如只选择再SYBASE中刚插入的记录),最后再编程实现包的调度(如每小时执行一次)
    SQL SERVER有大量的文档参考~~~~~
      

  2.   

    其实也可以不用编程,只要在SQL SERVER里设计好DTS包就可以了~~这都是图形化界面~~~
      

  3.   

    循环读记录的话这样速度太慢
    79720699(大地勇士):能不能讲清楚点,或给个实例。DTS包??
      

  4.   

    俺QQ号码121642038
    我抓几张图给你吧~~我以前在与ORACLE9i中测试成功~
      

  5.   

    谢了。
    我也做了一个,是每天定时运行。把主要代码给大家看一下,可以做个参考。大家也可以提下意见。
    Public cnSyb As New ADODB.Connection
    Public cnSql As New ADODB.Connection
    Public rsSyb As New ADODB.Recordset
    Public rsSql As New ADODB.RecordsetPublic Sub trunSySql()
        Dim SybFieStr(19) As String
        Dim SybFieDat(5) As Date
        Dim SybFieLon(2) As Long
        cnSyb.Open "driver={Sybase System 11};srvr=ZZ-R8YUK4KWVSGX;uid=sa;db=master"
        cnSql.Open "driver={sql server};server=127.0.0.1;uid=kmycgis;pwd=martin80048112;database=cgkmycgis;"
        Set rsSyb.ActiveConnection = cnSyb
        rsSyb.CursorType = adOpenStatic
        rsSyb.LockType = adLockOptimistic
        Set rsSql.ActiveConnection = cnSql
        rsSql.CursorType = adOpenStatic
        rsSql.LockType = adLockOptimistic
        rsSyb.Open "select * from qq"
        rsSql.Open "select * from ww"
        rsSyb.MoveFirst
        Do Until rsSyb.EOF
            rsSql.AddNew
            For i = 0 To rsSyb.Fields.Count - 1
                rsSql.Fields(i) = rsSyb.Fields(i)
            Next
            rsSyb.MoveNext
        Loop
        rsSql.Update
    End Sub
      

  6.   

    如果是整张表的话用BCP不是更方便
      

  7.   

    哦,数据类型是不要的,我是做测试用的.
    你的DTS好像对Sybase不支持.对其它的数据库我也听过说可用.就是发布和订阅嘛
      

  8.   

    什么又是BCP,给能给个实例看看。