J'ai écrit un déclencheur qui met à jour la table locale et la table similaire sur le serveur lié.Test de la conccetion du serveur lié à l'intérieur du déclencheur ou de la procédure
CREATE TRIGGER myTtableUpdate ON myTable
AFTER UPDATE AS
IF (COLUMNS_UPDATED() > 0)
BEGIN
DECLARE @retval int;
BEGIN TRY
EXEC @retval = sys.sp_testlinkedserver N'my_linked_server';
END TRY
BEGIN CATCH
SET @retval = sign(@@error);
END CATCH;
IF (@retval = 0)
BEGIN
UPDATE remoteTable SET remoteTable.datafield = i.datafield
FROM my_linked_server.remote_database.dbo.myTable remoteTable
INNER JOIN inserted i ON (remoteTable.id = i.id)
END
END -- end of trigger
Malheureusement lorsque la connexion est en panne je reçois le message d'erreur
'Msg 3616, niveau 16, état 1, ligne 2'
« Transaction condamnée à déclenchement. Le lot a été annulé '
et la mise à jour localement effectuée est annulée.
Existe-t-il un moyen de maintenir cette erreur et de conserver les mises à jour locales?
Notez que j'utilise SQL Server 2005 Express Edition sur les deux ordinateurs exécutant Windows XP Pro.
edit1: SQL Server Express Edition est
Edit2: Les deux PC exécutent Windows XP Pro, ce ne sont pas des serveurs
voir mon dernier commentaire ... –