Sto provando a verificare una proposta presentata da uno dei nostri fornitori per l'accesso al loro database di prodotti e riguarda le query e le transazioni che si estendono su più server. Non l'ho mai fatto direttamente nel database prima d'ora e per essere sincero, non ne ho la possibilità, quindi sto cercando di carpire una prova che questo funziona almeno concettualmente.Come posso utilizzare le transazioni che si estendono su catene concatenate su più server?
Ho due server SQL Server 2005. Prendiamolo per argomento chiamiamolo Server1 e Server2 [mantieni il tuo applauso] ciascuno contenente un database fittizio. Il database fittizio su Server1 si chiama Source e quello su Server2 è chiamato Destination, solo per mantenere le cose semplici. I database entrambe una sola tabella denominata rispettivamente di ingresso e di uscita, quindi la struttura è quasi spiegato in questo modo:
- Server1.Source.dbo.Input
- Server2.Destination.dbo.Output
Ho una procedura memorizzata su Server2 chiamata WriteDataToOutput che riceve un singolo argomento Varchar e scrive il suo contenuto nella tabella di output.
Ora la trickiness inizia:
- voglio creare una stored procedure su Server1.Source che chiama la stored procedure WriteDataToOutput definita su Server2, che sembra il semplice passo.
- Desidero che questa chiamata faccia parte di una transazione in modo che se la procedura che la richiama non riesce, l'intera transazione viene annullata.
E qui termina la mia conoscenza di cosa fare. Qualcuno può indicarmi la giusta direzione? Ho provato questo su due diversi database sullo stesso server, e ha funzionato bene, portandomi a pensare che funzionerà su server diversi, la domanda è: come faccio a fare una cosa del genere? Da dove comincio?
+1 per la domanda ben scritta –