是DOEVENTS的错,你跟踪一下吧,或者你查看一下SQL SERVER 的进程。

解决方案 »

  1.   

    在sql查询分析器中跑一下sql语句,看一下有没有问题
      

  2.   

    打开SQLSERVER的查询分析器,SP_LOCK,SP_WHO2看看那个SESSION被锁定!
      

  3.   

    search_sql="select * from OPENDATASOURCE(         'SQLOLEDB',         'Data Source=211.162.118.999;User ID=sa;Password=9999').kmain.dbo.kemployce "conn.excute search_sql
    将这个表读到一个vs表格里。
    然后再读其它表。就这样的!
      

  4.   

    使用联结服务器:
    EXEC sp_addlinkedserver '别名','','MSDASQL',NULL,NULL,'DRIVER={SQL Server};SERVER=远程名;UID=用户;PWD=密码;'
    exec sp_addlinkedsrvlogin  @rmtsrvname='别名',@useself='false',@locallogin='sa',@rmtuser='sa',@rmtpassword='密码'
    GO
    然后你就可以如下:
    select * from 别名.库名.dbo.表名
    insert 库名.dbo.表名 select * from 别名.库名.dbo.表名
    select * into 库名.dbo.新表名 from 别名.库名.dbo.表名
    go
      

  5.   

    是不是網絡太慢了?
    設一下Connection的TimeOut屬性。設短一點。
      

  6.   

    Dim conn As New Connection
            conn.CommandTimeout = 0
            conn.Open local_db_stringread_vs_result = op_data.read_to_vs(temp_data, "select * from OPENDATASOURCE( 'SQLOLEDB',  'Data Source=" & remote_server & " ;User ID= " & remote_login_name & " ;Password=" & remote_login_pwd & "').kmain.dbo.kclient_tc  If read_vs_result = "ok" Then
                                    For row_long = 1 To temp_data.Rows - 1
                                            temp_values = ""
                                            For i = 2 To temp_data.Cols - 1
                                                    temp_values = temp_values & "," & "'" & temp_data.TextMatrix(row_long, i) & "'"
                                            Next
                                            '去掉前面一个 , 号
                                            temp_values = VBA.Mid(temp_values, 2)
                                            conn.Execute (into_sql & " values(" & temp_values & ")")
                                    Next'然后,读取第 kempl 表 ,更新本地 kempl 
    '然后,读取第 kcom 表 ,更新本地 kcom 
    conn.Close
    Set conn = Nothing结束这是读取远程 xx 表的数据到本地一个 temp_data 表格里。然后再写入本地数据库