Bonjour à tous,
J'ai deux serveurs SQL A et B, et je souhaiterais mettre à
jour des données d'une table sur B, à partir de données
d'une table de même structure sur B.
J'ai configuré sur A mon serveur B, comme étant un serveur
lié, et mon trigger attaché à ma table A est ainsi fait :
CREATE TRIGGER [trigger1] ON [dbo].[ma_table_A]
FOR INSERT, UPDATE, DELETE
AS
if (columns_updated() & 3)>0
begin
insert into [mon_serveur_B].[ma_base_B].[dbo].[ma_table_B]
select mon_champ_1, mon_champ_2 from inserted
end
Je vérifie la syntaxe, pas de problème, puis j'applique.
Voici le message d'erreur que je reçois lorsque je modifie
la table "ma_table_A" sur laquelle j'ai créée mon trigger:
"[Microsoft][ODBC SQL Server Driver][SQL Server][OLE/DB
provider returned message: [Microsoft][ODBC SQL Server
Driver] Erreur de transaction distribuée]
[Microsoft][ODBC SQL Server Driver][SQL Server]Trace de
l'erreur OLE DB [OLE/DB Provider 'MSDASQL' ITransactionJoi
Join Transaction returned 0x8004d00a].
[Microsoft][ODBC SQL Server Driver][SQL Server] L'opération
demandée ne peut pas être effectuée car le fournisseur OLE
DB 'MSDASQL' n'a pas réussi à démarrer de transaction
distribuée."
Donc, comme le confirme le message d'erreur, je me doute
qu'il s'agit d'un problème de transaction distribuée . J'ai
pourtant configurer mon serveur A pour qu'il accepte les
transactions distribuées.
Si quelqu'un avait une idée, elle serait bienvenue! Merci
d'avance.