Hallo, ich sehe scheinbar den Wald vor lauter Bäumen nicht mehr. Ich habe ein kleines Trigger Programm in c# für SQL Server 2008 R2 Express Edition erstellt, welches Daten von einem INSERT auf einem Rechner in den SQL Server auf einem anderen Rechner schreibt. Nach einigen Problemen mit MS DTC und Co., klappte dann das Öffnen der DB auf dem fremden Rechner, jedoch gab es noch Fehler bzgl. SQL Befehl. Daraufhin habe ich ein kleines Konsolenprogramm erstellt, um einfach nur die Verbindung und den SQL Befehl (hart codiert zum Test) zu testen und siehe da, Fehler gefunden und beseitigt. Funktioniert. Dann habe ich die gleiche Änderung im Trigger Programm durchgeführt und seitdem bricht er beim Open auf die DB des externen Rechners ab und bringt die Meldung:
Der Ausdruck konnte nicht ausgewertet werden, da der Code optimiert wurde oder oben in der Aufrufliste ein systemeigener Frame enthalten ist.
Mehr kommt an Fehlertext nicht. Bei "Statische Member" bekomme ich noch die
ComPlusExceptionCode 532459699
Das ist alles. Beim Suchen im Internet finde ich zu diesen Meldungen allerhand, aber fast alles hat etwas mit APS.net und Response.direct zu tun.... Wenn irgendjemand eine Idee hat, bitte antworten. Danke!
Hast du probiert einen T-SQL Trigger zu verwenden? Tritt da dasselbe Problem auf? Sonst kann mit diesen Informationen nur geraten werden, außer jemand hatte das Problem schon mal ;-)
So - nach langem suchen und finden habe ich jetzt einen T-SQL Trigger erstellt. Einen Linked Server eintrag hinbekommen und festgestellt, dass der XML Datentyp bei solchen Aktionen nicht unterstützt wird :-( Sehr viel gelernt also. Wenn ich jetzt einen INSERT ausführe kommt die Meldung 1206 der Microsoft Distributed Transaction Coordinator (MS DTC) hat die verteilte Transaktion abgebrochen. Ich suche jetzt nach dieser Meldung weiter...
Ich hab es hin bekommen. So wie es aussieht lag es wohl "nur" daran, dass ich den fernen Rechner "lediglich" per TCP/IP Adresse erreicht habe und keine Namensauflösung möglich war. Nachdem ich den Rechner in der Hosttabelle des anderen Rechners namentlich hinterlegt habe, hat es funktioniert. Darauf bin ich durch einen Artikel bzgl. DTCPing gekommen. Jetzt geht es sowohl mit T-SQL, als auch mit c# Trigger.
Hier noch ein Link zu einer Seite, die u.U. auch für andere Hilfreich ist, die mit dem MS DTC Probleme haben... http://www.sqlwebpedia.com/content/msdtc-troubleshooting
NEIN - nachdem es von meinem Entwicklungsrechner (W7 32 Bit) zum entfernten SQL Server (W7 64 Bit) jetzt funktioniert, dachte ich, mache ich die gleichen Aktionen nun auf dem eigentlichen Webserver (W2008R2 64 Bit) und jetzt bekomme ich dort die Meldung 7391. Suche schon wieder seit gestern Mittag nach diesem Teil und finde nur Sachen, die alle korrekt sind. Der DTCPing funktioniert von diesem Rechner aus. Ein INSERT direkt in den entfernten SQL Server geht auch. "Nur" aus dem T-SQL/c# Trigger bringt er diese Meldung. Also bitte, wenn jemand so etwas schon hatte, melden. Danke!
Noch eine wichtige Info: Zum Testen habe ich die Firewall sicherheitshalber auf beiden Rechnern ausgeschaltet, da bzgl. MS DTC hier immer wieder darauf hingewiesen wird.
Nein - hab ich noch nicht versucht. Den Trigger hatte ich zunächst so erstellt, dass er in eine Tabelle in der gleichen DB etwas schreibt. Das hat funktioniert. T-SQL kann ich machen und melde mich, was dabei raus kommt. Ach so - die Anwendung läuft mit Sicherheitsstufe Extern. In einigen Threads habe ich gelesen, dass die o.g. Meldung "Der Ausdruck konnte nicht..." nur ein Hinweis ist, dass der Debugger keine Infos bekommt. Woran kann das liegen?
Tritt da dasselbe Problem auf?
Sonst kann mit diesen Informationen nur geraten werden, außer jemand hatte das Problem schon mal ;-)