-3

ストアドプロシージャを呼び出して.vbsファイルを実行しています。

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
'***********************

次のようなエラーが表示されます

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

同じストアド プロシージャがクエリ アナライザーで実行されます。プロシージャの実行に 17 秒かかります。.vbs スクリプトまたは ASP ページで実行するとどうなりますか。

4

1 に答える 1

0

rs.open を含む行がコメントアウトされているため、レコードセットを開いていないように見えます

編集:実際によく見ると、特定の行が別のクエリを参照しているようです。ただし、使用する前にレコードセットを開く必要があります。

于 2012-05-25T07:58:49.900 に答える