在sqlserver上建了一个存储过程,该存储过程执行约3分钟,通过vb调用:
        sysConn.Execute ("GET_IF_DAY")程序10秒左右结束,但 Err.Description 的错误描述为:“超时已过期”,并且存储过程也未执行。

解决方案 »

  1.   


    超时:
    1:企业管理器->服务器->属性->连接->查询超时(改为0或一个较大的数)
    2:ADO的连接超时属性connectiontimeout 设大点.
    3:ADO的CommandTimeout设大点
      

  2.   

    ADO的CommandTimeout设大点,ADO的连接超时属性connectiontimeout 设大点.
      

  3.   

    企业管理器->服务器->属性->连接->查询超时 改为 0
    我又加了两句代码:
        sysConn.ConnectionTimeout = 3600000
        sysConn.CommandTimeout = 3600000
    情况依旧。
      

  4.   

    在代码中加入sysConn.CommandTimeout = 0即可
      

  5.   

    我的全部vb代码如下:==================================================================================Public configFile As String
    Public IP As String
    Public DatabaseName As String
    Public UserID As String
    Public Password As String
    Private Sub Form_Load()
           
        Dim sysConn As New ADODB.Connection                  '建立一个 ADO Connection
        Dim cmd As New ADODB.Command
        
        On Error Resume Next    configFile = App.Path + "\SchedualReport.ini"        '得到配置文件(.ini)
        Open configFile For Input As #1
        
        Do
            Input #1, a$
            k = InStr(1, a$, "=")
            a0 = Trim(Left(a$, k - 1))                       '得到“=”左边的变量名
            a1 = Trim(Right(a$, Len(a$) - k))                '得到“=”右边的变量值
            If LCase(a0) = "ip" Then
                IP = a1                                      '服务器ip
            ElseIf LCase(a0) = "databasename" Then
                DatabaseName = a1                            '数据库名
            ElseIf LCase(a0) = "userid" Then
                UserID = a1                                  '数据库用户名
            ElseIf LCase(a0) = "password" Then
                Password = a1                                '数据库口令
            ElseIf LCase(a0) = "show" Then
                If a1 = 1 Then               '用于调试,“1”为显示界面,“0”为不显示
                    Me.Visible = True
                Else
                    Me.Visible = False
                End If
            End If
            
        Loop Until EOF(1)
        
        With sysConn
            .ConnectionString = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=" & UserID & ";Initial Catalog=" & DatabaseName & ";Data Source=" & IP & ";password=" & Password
            .Open
        End With
            
        log.Text = log.Text & Now & "存储过程开始执行..."
        
        sysConn.ConnectionTimeout = 3600000
        sysConn.CommandTimeout = 3600000
        sysConn.Execute (" exec GET_IF_DAY")
        
        If Err.Number <> 0 Then
            log.Text = log.Text & Now & "存储过程执行错误:"
            log.Text = log.Text & "    " & Err.Description                   
        Else
            log.Text = log.Text & Now & "存储过程执行完成。"
        End If
        
        Close
    End Sub==================================================================================
    ==================================================================================SchedualReport.ini配置文件内容==================================================================================IP=192.168.0.124
    DatabaseName=UltraDB
    UserID=sa
    Password=
    Show=1==================================================================================
      

  6.   

    将sysConn.CommandTimeout = 3600000 改为 sysConn.CommandTimeout = 0 也不行,不知何故啊。