Fråga : Mellanlägget in i MySQL bordlägger från MSSQL-mellanlägget startar

Hi där! förmiddag för

I nu några dagar på lösning efter av problemet:

I har en applikation som är den kör på en MSSQL-databas. Nu en annan applikation, spring på en MySQL-Database.
Now - de delar några data, som gör det nödvändigt att överföra partiska data mellan två tables.

The att närma sig är nu, för att skapa en starta på MSSQL-Bordlägga (t1) och för att skriva datan från ”mellanlägget” - bordlägga till MySQL-Bordlägga (t2).
Remember: Jag behöver endast en partisk uppsättning av data, var kolonnen namnger på t1 och t2 varierar. (ska ffieldms1-data fylls till fieldmy1),

MySQL-Database är ställer in som den anknöt serveren via konzeptual ODBC 5.1 Driver.

My startar är följaen: för class=" codeSnippet " för


1 för >


SKAPA STARTAR myInsertTrigger
    PÅ [MSSQLDB]. [dbo]. [t1]
    FÖR MELLANLÄGG UPPDATERING
    SOM
		FÖRKLARA @ID int
		VÄLJ @ID = (VÄLJ [ID] FRÅN insatt),
		SKRIV UT @ID
		OM (@ID>= 5000) OCH (@ID < 5999)
        BÖRJA
		UPPSÄTTNING XACT_ABORT PÅ
		BÖRJA TRANSAKTIONEN
			SÄTT IN IN I 
				OPENQUERY ([MYSQL-REMOTE], ',
				VÄLJ fieldmy1, fieldmy2
				FRÅN t1')
			VÄLJ fieldms1, fieldms2
			FRÅN insatt

			BORTTAGNINGS FRÅN [MSSQLDB]. [dbo]. [t1] VAR [LEGITIMATION] = @ID
		BEGÅ TRANSAKTIONEN
		END<-/pre>


When startar, är den utförda (e.g. med en uppdatering av LEGITIMATIONEN till ovannämnt spänna), efter funktionen för feloccurs

The kunde inte utföras, därför att OLE DB-familjeförsörjaren ”MSDASQL” var oförmögen att börja en utdelad transaktion. hjälp för valfritt för särdrag för
[MYSQL] [chaufför för ODBC 5.1] specifik inte behov för supported

I - google kommer med upp en samlas av trådar, mig fann inte den högra one.
If som någon vet, hur man konfigurerar mssql-skriva, mssqlserveren eller mysqlen-server

THANK YOU
" klar "

Svar : Mellanlägget in i MySQL bordlägger från MSSQL-mellanlägget startar

Om du går att göra denna i en starta, I-förmiddagen som slå vad din körning, resonerar är att du inte har att kontrollera av beställaren som utfärdar MELLANLÄGGSmeddelandet.

Om så är fallet jag skulle föreslår att du skapar ett nytt bordlägger - appellen den MySQLQueue och sätter in datan selektivt som skjuts in i denna bordlägger, in i det köar bordlägger, då använder ett jobb, som kör och skjuter det över in i MySQL.

Om du behöver, bestämda rekord som tas bort från ditt original, bordlägger dig kunde också göra den din insida startar, men jag skulle föreslår precis att att använda I STÄLLET FÖR startar för att göra jobbet.

Using detta att närma sig ska för att inte låsa dina mellanlägg på ditt original bordlägger stunder dig försök att synkronisera med en avlägsen MySQL server.  Den, introducerar emellertid någon latency som baseras på frekvensen att jobbet bearbetar ditt köar, men de bearbetas asynkront åtminstone.

Stunden startar är ett mycket kraftigt bearbetar, dem kan lätt komma med ett system till dess knä.  Använd dem med ytterlighet varnar och ALLTID mycket judiciously.
Andra lösningar  
 
programming4us programming4us