2012-05-25 44 views
-3

iam执行.vbs文件并调用存储过程。操作无法执行对象关闭asp

function getJobHistory(byval ServerName) 

    '**************************** 
    '* Connecting to server 

    dim rsArray 

    msgbox(ServerName) 

    cn.open "Provider=SQLOLEDB.1;Data Source=" & ServerName & ";Integrated Security=SSPI" 

    cmd.activeconnection =cn 
    MsgBox(cn.State) 

    If Err.Number <> 0 Then 
     Call HandleErrors(Err.Number, Err.Description, "Error Connecting To Server " & ServerName & "") 
    end if 

    'cmd.commandtext = "SELECT * FROM SYS.SYSDATABASES" 
    'query1="SELECT * FROM SYS.SYSDATABASES" 

    sql = "exec UMRDB..sp_Getobsoletebackupfile 0,0,0,'','','','',0,'','','',0" 

    mobjwritelog.Write(query) 

    'query=query & " insert into UMRDB..FileInfo select * from #fileinfo" 
    'query=query & " drop table #disk drop table #file" 
    'cmd.commandtext = query 
    'rs.Open query,cn 

    set rs=cn.Execute(sql) 

    'MsgBox(rs.RecordCount) 

    do while not rs.BOF and not rs.EOF 
     rsArray=rs.GetRows() 
     nr=UBound(rsArray,2) 
     MsgBox(nr) 
     rs.MoveNext 
    loop 

    rs.Close 

    ' end if 
end function 
'*********************** 

它给我误差作为在查询分析器执行..它需要17秒来执行,当我上的.vbs执行script.or procedure.what发生以下

Error: Operation is not allowed when the object is closed. 
Code: 800A0E78 
Source: ADODB.Recordset 

相同存储procedurte asp页面。

+1

-1清理代码,使其格式良好并删除注释行。 – AnthonyWJones

+0

您使用的是哪个版本的数据库?从Sql Server 2008升级到Sql Server 2010后,我遇到过类似的问题。如果记录集是空的,它会'关闭'记录集。在继续之前,我必须检查记录集的状态。 –

回答

0

看起来好像你还没有打开记录含有rs.open该行注释掉

编辑:其实仔细一看似乎特别行引用另一个查询。但是,在使用它之前,记录集仍然需要打开。

+0

我已经写了集rs = cn.executeSQL()这不符合目的..我必须打开它 – deepti

+0

不,你是对的。那应该打开记录集。 – Elliott

相关问题