Ik heb een prog gebouwd in VB6 om een DTS package op afstand uit te voeren.(source van www.sqldts.com geleend)
De bedoeling is dat een gebruiker deze EXE kan opstarten en zo op een knop drukt om wat bestanden te importeren.
In de achtergrond wordt dan een package gestart
De exe file werkt perfect als ik deze rechtreeks uitvoer op de SQL server.
Voer ik deze uit vanaf een client, krijg ik de melding zoals deze hieronder in de link staat:
http://home.planet.nl/~ben00058/melding.jpg
De source:
De melding heb ik in google en op msdn gezocht en het enige wat er staat is dat er problemen zijn met de rechten in de SQL server.
Dit zou niet moeten kunnen omdat de gebruiker ook in een PHP script wordt gebruikt om rechtreeks verbinding te maken met onze SQL server.Plus vanaf de sqlserver werkt de EXE wel zoals ik al aangaf.
Alle benodigde dll's staan op de clients.
Ik heb verschillende login technieken geprobeerd.Allen zonder resultaat
Ook heb ik geprobeerd om de GUID van de package aan te geven , maar ook dat geeft hetzelfde resultaat.
Ik heb het het ook in ASP en in VBscript geprobeerd. Ook weer hetzelfde verhaal
Wel was ik ergens tegen gekomen dat DTS altijd lokaal wordt uitgevoerd.
Kan het zo zijn dat ik dat de DTS package op een of andere manier moet exporteren als bestand en deze dan op een of andere manier kan oproepen via VB6?
Zo ja.......... Hoe moet ik dat doen?
De bedoeling is dat een gebruiker deze EXE kan opstarten en zo op een knop drukt om wat bestanden te importeren.
In de achtergrond wordt dan een package gestart
De exe file werkt perfect als ik deze rechtreeks uitvoer op de SQL server.
Voer ik deze uit vanaf een client, krijg ik de melding zoals deze hieronder in de link staat:
http://home.planet.nl/~ben00058/melding.jpg
De source:
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
| Private Sub ExecutePackage() Dim oPKG As DTS.Package, oStep As DTS.Step Set oPKG = New DTS.Package Dim sServer As String, sUsername As String, sPassword As String Dim sPackageName As String, sMessage As String Dim lErr As Long, sSource As String, sDesc As String ' Dim pkgID As String ' Dim pkgVersion As String ' Set Parameter Values sServer = "servernaam" sUsername = "gebruikersnaam of domein/gebruikersnaam" sPassword = "wachtwoord" sPackageName = "packagenaam" ' Load Package oPKG.LoadFromSQLServer sServer, sUsername, sPassword, _ DTSSQLStgFlag_UseTrustedConnection, , , , sPackageName ' Set Exec on Main Thread For Each oStep In oPKG.Steps oStep.ExecuteInMainThread = True Next ' Execute oPKG.Execute ' Get Status and Error Message For Each oStep In oPKG.Steps If oStep.ExecutionResult = DTSStepExecResult_Failure Then oStep.GetExecutionErrorInfo lErr, sSource, sDesc sMessage = sMessage & "Step """ & oStep.Name & _ """ Failed" & vbCrLf & _ vbTab & "Error: " & lErr & vbCrLf & _ vbTab & "Source: " & sSource & vbCrLf & _ vbTab & "Description: " & sDesc & vbCrLf & vbCrLf Else sMessage = sMessage & "Step """ & oStep.Name & _ """ Succeeded" & vbCrLf & vbCrLf End If Next oPKG.UnInitialize Set oStep = Nothing Set oPKG = Nothing ' Display Results MsgBox sMessage End Sub |
De melding heb ik in google en op msdn gezocht en het enige wat er staat is dat er problemen zijn met de rechten in de SQL server.
Dit zou niet moeten kunnen omdat de gebruiker ook in een PHP script wordt gebruikt om rechtreeks verbinding te maken met onze SQL server.Plus vanaf de sqlserver werkt de EXE wel zoals ik al aangaf.
Alle benodigde dll's staan op de clients.
Ik heb verschillende login technieken geprobeerd.Allen zonder resultaat
Ook heb ik geprobeerd om de GUID van de package aan te geven , maar ook dat geeft hetzelfde resultaat.
Ik heb het het ook in ASP en in VBscript geprobeerd. Ook weer hetzelfde verhaal
Wel was ik ergens tegen gekomen dat DTS altijd lokaal wordt uitgevoerd.
Kan het zo zijn dat ik dat de DTS package op een of andere manier moet exporteren als bestand en deze dan op een of andere manier kan oproepen via VB6?
Zo ja.......... Hoe moet ik dat doen?