[SQL Server] DTSPackageLog problemen

Pagina: 1
Acties:

  • UnderFlow
  • Registratie: November 2000
  • Laatst online: 15-01-2024
Ik wil in een ActiveX script onderdeel van een DTS package regels schrijven naar het logbestand. Dat zou in principe moeten met DTSPackageLog en dan WriteStringToLog.

Dit heb ik in onderstaande code geimplementeerd, ware het niet dat ik een foutmelding krijg zodra ik de stap uit probeer te voeren.

Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
'**********************************************************************
'  Visual Basic ActiveX Script
' Haalt het path en de filenaam op en controleert aanwezigheid file
'************************************************************************


Function Main()
    dim oFSO
    dim strFieldval
    dim strFilename
    
    strFilename = " ADR2_"
    strFieldval = DTSGlobalVariables("glb_ADR2_").Value 
    
   MsgBox  strFieldval
   '  instantiate the Scripting Object
     set oFSO = CreateObject("Scripting.FileSystemObject")

    '   Open the file
       if oFSO.FileExists(strFieldval) then
        DTSPackageLog.WriteStringToLog strFilename & " Check succeeded "
         Main = DTSTaskExecResult_Success
       else 
        DTSPackageLog.WriteStringToLog strFilename & " Check failed "
         Main = DTSTaskExecResult_Failure
      End If
     
End Function


Code is verder niet super boeiend. Er wordt gechecked of het bestand met de bestandsnaam wat in de globale variabele wordt opgeslagen ook daadwerkelijk aanwezig is en op basis daarvan moet in het log de corresponderende regel worden geschreven.

De foutmelding ontstaat gelijk op de eerste regel waar DTSPackageLog wordt aangesproken.
Error Code: 0
Runtimefout Microsoft VBScript
Object vereist 'DTSPackageLog'

Nu is het zo dat DTSPackageLog gewoon zo gebruikt kan worden zonder er een object van te maken. Verder heb ik ook duidelijk een logbestand aangegeven dus dat is het ook niet. De info op MSDN over dit onderwerp is helaas uiterst summier, dus dat schoot ook niet op.

Heeft iemand een idee wat ik fout doe of wat er fout zou kunnen gaan/wat ik over het hoofd zie?

  • Equator
  • Registratie: April 2001
  • Laatst online: 17:12

Equator

Crew Council

🦺#Rodekruis #whisky #barista

Je zal eerst een object aan moeten maken die je dan gebruikt:

Visual Basic:
1
Set oTest = CreateObject("DTSPackageLog")

oid..

  • UnderFlow
  • Registratie: November 2000
  • Laatst online: 15-01-2024
Je hoeft met DTSPackageLog geen object aan te maken en als ik dat doe krijg ik ook weer gelijk een foutmelding terug.

  • Annie
  • Registratie: Juni 1999
  • Laatst online: 25-11-2021

Annie

amateur megalomaan

Bij mijn weten is dit object alleen beschikbaar in een activex task (en een customtask, voor als je dynamisch tasks toevoegt).
Dus de vraag is: gebruik je het object in een activex task of vanuit - bijvoorbeeld - een script in een datapump? Dat laatste zal dus niet werken.

Today's subliminal thought is:


  • UnderFlow
  • Registratie: November 2000
  • Laatst online: 15-01-2024
Gewoon in een activex task.

Maar ik heb het probleem al gevonden, na uitvoerig blijven zoeken. Deze procedure werkt alleen zonder problemen als je de complete package uitvoert. Als je de afzonderlijke activex task uitvoert werkt het niet en krijg je de melding. Het DTSPackagelog wordt pas gemaakt tijdens de complete run van de package.

Wel vervelend, maar ach...