脚本失败,错误代码为80040E31

时间:2015-12-30 08:59:02

标签: sql-server vbscript odbc adodb

我们有一个VBScript可以将SAP Business Object数据库中的数据块下载到所谓的切片中,这些切片基本上都是.csv文件。到目前为止,该剧本运作得很好,我根本没有必要去研究它。但现在失败的是:

Error popup

此错误引用的脚本文件部分是以下代码中的dbConn.Execute(strSQL)行(从下面开始的第5行)。 我到目前为止尝试的是添加这些命令,但它们似乎无法解决任何问题:

'dbConn.ConnectionTimeout = 100
'dbConn.CommandTimeout = 100

脚本本身(不是全部,我不确定是否需要其余部分):

Sub subRunFilesInFolder(strFolder)
  Dim FSO, objFolder, objFiles
  Dim i, intTS, intTS_file_start, ts, tsKillBefore, TS_file_start, strModelName
  Dim dbConn, RST, RST2, strSQL
  Dim strVBSmodel
  Dim blRunIt

  'INIs
  strModelName = "bo_vbs_runner_1.5 "
  strConn = "DRIVER={SQL Server};SERVER=EUBASEURCIREP01;UID=ser_login;PWD=ser_login;DATABASE=ser"
  strComputer = FunstrComputerName
  strBORunner = "\\Eubaseurcirep01\reporting\DEVELOPMENT\BO\Automation\Models\BO_auto_run.xlsb"

  'Sets
  Set dbConn = CreateObject("ADODB.Connection")
  Set RST = CreateObject("ADODB.RecordSet")
  Set RST2 = CreateObject("ADODB.RecordSet")
  Set WshShell = WScript.CreateObject("WScript.Shell")
  Set FSO = Wscript.CreateObject("Scripting.FileSystemObject")
  Set objFolder = FSO.GetFolder(strFolder)
  Set objFiles = objFolder.Files
  Set appExcel = CreateObject("Excel.Application")

  'dbConn.ConnectionTimeout = 100
  'dbConn.CommandTimeout = 100

  strVBSmodel = strModelName & strComputer & " " & FunstrUserName & " " &  funCurrProcessId & " " & FunGetProcessIDCurrentOfExcel(strComputer)
  appExcel.Application.Visible = False
  appExcel.Displayalerts = False
  Set objBORunner = appExcel.Workbooks.Open(strBORunner)

  dbConn.Open strConn
  ts = FunGetServerNow(dbConn,RST)
  tsKillBefore = DateAdd("N", -15, ts)
  intTS = funTimeStampToInteger(FunGetServerNow(dbConn, RST))

  'Get ReportDate
  strSQL = "SELECT yyyymmdd FROM map.reportdate WHERE dtAct=cast(GETDATE() as DATE);"
  RST.Open strSQL, dbConn
  If RST.EOF Then
    strReportDate="99991231"
  Else
    strReportDate=RST.fields(0).value
  End If
  RST.close


  'Kill stucked excel and vbs processes
  strSQL = "SELECT distinct * FROM [ser].[bo].[_log] WHERE [proc]='BO VBS' AND result_text='started' AND end_timestamp<" & funTimeStampToInteger(tsKillBefore) & _
      " AND lower(model) like '% " & LCase(strComputer) & " %';"
  RST.Open strSQL,dbConn
  If RST.EOF Then 'Nothing to kill
  Else
    Do While Not RST.EOF
      strOldVBS = split(RST.fields("model"), " ")(3)
      strOldExcel = split(RST.fields("model"), " ")(4)
      Call SubKillProcessIDOnstrComputer(strComputer, strOldVBS)
      Call SubKillProcessIDOnstrComputer(strComputer, strOldExcel)

      strSQL = "UPDATE [ser].[bo].[_log] SET result_text='stopped', end_timestamp='" & funTimeStampToInteger(FunGetServerNow(dbConn,RST2)) & "' " & _
          "WHERE [proc]='BO VBS' AND result_text='started' AND model='" & RST.fields("model").value & "' AND parameters='" & _
          RST.fields("parameters").value & "';"
      dbConn.Execute(strSQL)
      RST.MoveNext
    Loop
  End If
  RST.close

1 个答案:

答案 0 :(得分:0)

解码0x8004nnnn错误

设施代码4的HResults表示HResult包含OLE错误(0x0 = 到0x1ff),其余的范围(0x200以上)是component = 特定错误,因此来自一个组件的20e将具有不同的含义= 从另一个组件到20e。

您很幸运,因为您的组件正在告诉您OLDB的错误 - TIMEOUT