Toon posts:

[VBS] Wait for Stored Procedure to end...

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hallo Allen,

Ik loop momenteel tegen een probleem aan met het starten van Stored Procedures middels Visual Basic...

Idee:
Met een Vbscript wil ik een bepaalde stored procedure starten en hiervan de tijd opmeten. Echter... De stored procedure wordt gestart, maar er wordt _niet_ met het script gewacht dat de procedure is afgelopen.
De Stored Procedure wordt gestart en er wordt verder gegaan met het script :(

Heeft iemand een idee om de stored procedure te starten en het script te laten wachten totdat de procedure is afgelopen? En _dan_ pas verder te gaan met het script?

Mvg, Eazel

  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 26-06 10:37

OZ-Gump

terug van weggeweest

Hoe start je de SP, vanuit welke programmeeromgeving start je de SP, in wat voor omgeving/database zit de SP enzovoorts, enzovoorts.

Dit zijn allemaal gegevens die nodig zijn om een enigszins steekhoudend antwoord te kunnen geven. Met de gegevens die er nu staan kunnen we weinig

My personal website


Verwijderd

Topicstarter
Ik heb een Windows 2000 Server omgeving (SP4) met MS SQL 2000 (geen sp).
De scripttaal die ik gebruik is VBScript (5.6).

Hierbij het script van wat ik tot nu toe heb:

' Script variables
'------------------------------------------------------------------------------------
Option Explicit

Dim strTime(2), strDSN, strUser, strPass, SQLConfig

strDSN="database"
strUser="sa"
strPass=""

' Functions
'------------------------------------------------------------------------------------

Function DoSQLSP

Dim objConnect, objRsList, strQuery, strValue

strTime(0) = Timer
Set objConnect = CreateObject("ADODB.Connection")
objConnect.Open "DSN=" & strDSN & ";UID=" & strUser & ";PWD=" & strPass & ";"
Set objRsList = CreateObject("ADODB.RecordSet")

strQuery = "SP_ov_e2e"
objRsList.Open strQuery, objConnect

Set objRsList = Nothing
Set objConnect = Nothing

strTime(1) = Timer

wscript.echo "Begintime: " & strTime(0) & " endtime: " & strTime(1) & " == " & (strTime(1) - strTime(0))

End Function


' Main
'------------------------------------------------------------------------------------
DoSQLSP

Verwijderd

IK zou inplaats van een recordset object een command object gebruiken met de method Execute

  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 26-06 10:37

OZ-Gump

terug van weggeweest

Het kan aan mij liggen, maar hier haal ik zo snel even geen Stored Procedure uit.... :?

Als ik dit zo bekijk lijkt het me een oplossing om de functie die je gemaakt hebt een retourwaarde te geven, desnoods aan de hand van een variabele (stel: ready, en da's een boolean). Zeg even dat je de variabele aan het begin van de funtie false maakt. Je kunt dan de functie aanroepen en vervolgens een while opstellen die door blijft gaan zo lang de variabele ready false is. Aan het eind van de funciton stel je de variabele (dus) in op true...

My personal website


Verwijderd

Topicstarter
Je bedoelt op deze manier?:

Function DoSQLSP

Dim objConnect, objRsList, strQuery, strValue, objCmd

Const adCmdStoredProc = 4
Const adStateExecuting = 4

strTime(0) = Timer
Set objConnect = CreateObject("ADODB.Connection")
objConnect.Open "DSN=" & strDSN & ";UID=" & strUser & ";PWD=" & strPass & ";"

Set objCmd = CreateObject("ADODB.Command")
objCmd.ActiveConnection = objConnect
objCmd.CommandType = adCmdStoredProc
objCmd.CommandText = "SP_ov_e2e"
objCmd.Execute

Do While (objCmd.State = adStateExecuting)
'do nothing
Loop

Set objRsList = Nothing
Set objConnect = Nothing

strTime(1) = Timer

wscript.echo "Begintime: " & strTime(0) & " endtime: " & strTime(1) & " == " & (strTime(1) - strTime(0))

End Function

==================

Dan krijg ik helaas dezelfde resultaten :(

Verwijderd

Topicstarter
De stored Procedure zijn de volgende regels:

1e Script:
strQuery = "SP_ov_e2e" <<--- SP_ov_e2e is de Stored Procedure
objRsList.Open strQuery, objConnect

2e Script:
objCmd.CommandText = "SP_ov_e2e" <<--- SP_ov_e2e is de Stored Procedure

  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 26-06 10:37

OZ-Gump

terug van weggeweest

Verwijderd schreef op 09 oktober 2003 @ 16:06:
Je bedoelt op deze manier?:
<..knip..>
Dan krijg ik helaas dezelfde resultaten :(
Dat bedoelde ik dus ook niet. ;)
Even lezen wat ik ECHT gezegd heb :Y)


Was geen reply naar mij natuurlijk! :D

Edit:
Nu wordt het al iets duidelijker ;)
Probleem is dus dat SP2 pas mag starten als SP1 klaar is, of dat niet? Mocht dit de bedoeling zijn, zoek dan eens goed op google-groups, want volgens mij ben ik zoiets niet al te lang geleden wel eens tegengekomen daar.....

[ Voor 45% gewijzigd door OZ-Gump op 09-10-2003 16:13 ]

My personal website


Verwijderd

Topicstarter
Jah... Sorry... Ik zal het op deze manier doen ;)

OZ-Gump:

Ik kan idd de aanroep van de stored procedure in een for...Next lus ofzo doen...
Echter... ik weet niet goed hoe ik dan (in de stored procedure) moet door laten geven aan het vbscript, dat (de stored procedure) klaar is...

Want als de Recordset.Open "Stored Procedure" wordt aangeroepen is deze (volgens mij) al klaar en zou de False Flag al weer True zijn ... :(

  • rinkel
  • Registratie: September 2002
  • Laatst online: 20:59
Lijkt me op zich een prima methode om de SP aan te roepen. Ik gebruik ook meestal deze methode, maar je kunt er idd niet op wachten.

Wat je zou kunnen proberen is om een SQLserver object te gebruiken en op die wijze de SP aan te roepen. Ik weet echter niet of dit het juiste resultaat op levert.

Groet

Rinke

  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 26-06 10:37

OZ-Gump

terug van weggeweest

Is het een optie de SP een bepaald veld in een (nog aan te maken) veld aan te laten passen en dat je dan dat veld in de gaten houdt?

Oftewel: Maak een tabel Status met een veld SP1, een veld SP2, et cetera. Zet de velden standaard op 'ready', roep vervolgens de SP aan (en zet het bijbehorende veld op 'busy') en maak een while-loopje zolang het veld op 'busy' staat. En de SP zet (als laatste) dat veld weer op 'ready'! Idee?

My personal website


Verwijderd

Topicstarter
OZ-Gump:

Thanx man! Tis gelukt :)
Ik laat nu mijn SP een tijd terugsturen (had ook wat anders kunnen zijn) en ik wacht net zo lang totdat mijn vbscriptje die tijd heeft ontvangen :)

Thanx! All of you!
Pagina: 1