Frage : Einsatz in MySQL Tabelle vom MSSQL Einsatz-Auslöser

Hallo dort!

I morgens jetzt einige Tage auf dem Lösen des folgenden Probleme:

I haben eine Anwendung, diese läuft auf eine MSSQL Datenbank. Jetzt eine eine andere Anwendung, laufend auf ein MySQL-Database.
Now - sie teilen etwas Daten, die es notwendig, teilweise Daten zwischen zwei tables.

The Annäherung zu übertragen ist jetzt, einen Auslöser auf der MSSQL-Tabelle zu verursachen und (t1) die Daten „vom Einsatz“ zu schreiben bildet - Tabelle zum (t2) MySQL-Table.
Remember: Ich benötige nur einen teilweisen Satz Daten, wohin Spaltennamen auf T1 und T2 sich unterscheiden. (ffieldms1-data wird zu fieldmy1 gefüllt), wird

MySQL-Database als verbundener Bediener über ODBC 5.1 Driver.

My konzeptual Auslöser ist folgen gegründet:


1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:

TRIGGERmyInsertTrigger VERURSACHEN
    AUF [MSSQLDB]. [dbo]. [T1]
    FÜR EINSATZ UPDATE
    WIE
		@ID int ERKLÄREN
		@ID VORWÄHLEN = ([Identifikation] VON eingesetzt) VORWÄHLEN
		@ID DRUCKEN
		WENN (@ID >= 5000) UND (@ID < 5999)
        ANFANGEN
		XACT_ABORT AN EINSTELLEN
		VERHANDLUNG ANFANGEN
			IN EINSETZEN 
				OPENQUERY ([MYSQL-REMOTE], '
				Fieldmy1, fieldmy2 VORWÄHLEN
				VON t1')
			Fieldms1, fieldms2 VORWÄHLEN
			VON eingesetzt

			LÖSCHUNG VON [MSSQLDB]. [dbo]. [T1] WO [Identifikation] = @ID
		VERHANDLUNG FESTLEGEN
		END


When Auslöser durchgeführter (z.B. mit einem Update von Identifikation zur oben genannten Strecke) folgender Störung occurs

The Betrieb ist, könnte nicht durchgeführt werden, weil der ALTE DB-Versorger „MSDASQL“ nicht imstande war, eine verteilte Verhandlung anzufangen.
[MYSQL] [ODBC 5.1 Fahrer] Zusatzeinrichtung nicht supported

I spezifische Hilfe der Notwendigkeit - google holt oben eine Masse der Gewinde, ich fand nicht, dass das rechte one.

If jemand weiß, wie man den Mssqlindex, den mssql Bediener oder das mysql-server

THANK YOU
zusammenbaut

Antwort : Einsatz in MySQL Tabelle vom MSSQL Einsatz-Auslöser

Wenn Sie dies in einem Auslöser tun werden, wette ich, dass Ihr treibender Grund ist, dass Sie nicht Steuerung des Klienten haben, der die EINSATZ-Aussage herausgibt.

Wenn dieses der Fall ist, würde ich vorschlagen, dass Sie eine neue Tabelle herstellen - sie nennen MySQLQueue und die Daten selektiv einsetzen, die in diese Tabelle, in diese Warteschlangentabelle gedrückt, dann einen Job verwendet wird, der sie vorbei in MySQL laufen lässt und drückt.

Wenn Sie bestimmte Aufzeichnungen benötigen, die aus Ihrer ursprünglichen Tabelle gelöscht werden, konnten Sie das innerhalb Ihres Auslösers auch tun, aber ich würde gerade die Anwendung vorschlagen, die ANSTELLE vom Auslöser, um die Arbeit zu erledigen ist.

Using diese Annäherung verriegelt nicht Ihre Einsätze auf Ihrer ursprünglichen Tabelle, während Sie versuchen, mit einem FernMySQL Bediener zu synchronisieren.  Er stellt jedoch etwas Latenz vor, die auf der Frequenz basiert, dass der Job Ihre Warteschlange verarbeitet, aber sie werden asynchron mindestens verarbeitet.

Während Auslöser ein sehr leistungsfähiges Werkzeug sind, können sie ein System zu seinen Knien leicht holen.  Sie mit extremer Vorsicht sehr vernünftig benutzen und IMMER.
Weitere Lösungen  
 
programming4us programming4us