in der Notwendigkeit einer Erweiterung in SQLAnywhere (16) einige DOS-Funktionen auf dem Server zuzugreifen, wo die DB läuft, habe ich versucht:Wie kann SQLAnywhere die „externe CLR“ Zugriff auf einen Systemprozess
Ein erster Code für eine DLL, die von Sybase aufgerufen werden soll
________! ! SAExternal.vb ____________
Imports System.Diagnostics
Public Class SAExternal
Public Shared Function getDone()
Dim myProcess As Process = System.Diagnostics.Process.Start("notePad.exe", "C:\data\CLR\zTest.txt")
myProcess.WaitForExit()
myProcess.Close()
getDone = "OK"
End Function
End Class
mit kompiliert:
vbc.exe/t: library /out:SAExt.dll SAExternal.vb
Folgt einige Code meine DLL
zu testen_________! SAMain.vb ______________
Module SAMain
Sub Main()
Dim obj as New SAExternal()
MsgBox("Test SAMain " & obj.getDone())
End Sub
End Module
zusammengestellt mit: vbc.exe/t: winexe /r:SAExt.dll SAMain.vb
SAMain.exe richtig notepad.exe öffnet, wartet, bis ich schließen und kommt mit der Meldung "Test SAMAIN OK"
In SQLAnywhere, ich codiert:
CREATE FUNCTION getDone()
RETURNS LONG VARCHAR
EXTERNAL NAME 'C:\data\CLR\SAExternal\SAExt.dll::SAExternal.getDone() string'
LANGUAGE CLR
aufrufen func Wenn Sie "Select getDone()" auswählen, wird ein Fehler zurückgegeben: "Laden der Datei oder Assembly, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = ........" oder einer der zugehörigen Komponenten nicht möglich ...“
Wenn ich den Prozess Teil des SAExternal Modul herausnehmen:
Public Class SAExternal
Public Shared Function getDone()
getDone = "OK"
End Function
End Class
meine Funktion gibt mir die richtige Antwort (‚OK‘)
Für Testzwecke Endivie ich alle Diese Dateien befinden sich im selben Verzeichnis wie meine Datenbankdatei, einschließlich .vb und .dll.
Ich habe das Web seit Tagen durchsucht, um zu verstehen, was ich falsch gemacht habe, und kann nicht finden, was ich verpasst habe.
Kann mir jemand helfen?
die Ausführung der getDone() Funktion gibt einen Syntaxfehler in der Nähe von * out * (oder aus) von * out * string . Sind Sie sicher, dass diese Syntax in SQLAny 16 korrekt ist? Es heißt: "Falscher Typ in Parameterliste: * out * String nicht erkannt" – karlD