OVH Cloud OVH Cloud

ANSI_NULLS & ANSI_WARNINGS

1 réponse
Avatar
ILyasse
Bonjour,

Sur SQL server 2000, j'ai un trigger qui update une table situé sur un autre
server.
J'utilise le Linked_server, seulement quand le trigger est lancé,j'ai le
message d'erreur suivant : "Heterogeneous queries require the ANSI_NULLS and
ANSI_WARNINGS trigger".

J'ai appliqué les solutions que j 'ai trouvé dans certains forum à savoir

SET ANSI_NULLS ON
SET ANSI_WARNINGS ON
GO en tête du trigger mais rien à faire, toujours le même message d'erreur.
Aussi j'ai tenté de placer ces SET ANSI_NULLS,... au dessus de chaque query...
SET ANSI_NULLS ON
SET ANSI_WARNINGS ON
set xact_abort on
update servername.dbname.dbo.table ...

Mais rien à faire toujours le même problème. Est-ce quelqu'un à une solution
s'il vous plait ?

1 réponse

Avatar
Lionel Billon (MVP)
Bonjour,

Un trigger n'est ni plus ni moins qu'une procédure stockée executée
automatiquement. De ce fait, les memes regles s'appliquent.
Il se trouve que les commandes SET ANSI_NULLS et SET ANSI_WARNING
seront purement et simplement ignorées si vous les mettez à l'intérieur du
code
de la procédure ou du trigger.
En fait, c'est lors de la création (ou modification) de la procédure ou du
trigger que
SQL Server sauvegarde ces éléments.
De ce fait, supprimez votre trigger puis recréer le (DROP puis CREATE) ou
utilisez la commande ALTER et cette fois ci spécifiez les commandes SET ANSI
AVANT les commandes DROP/CREATE ou ALTER TRIGGER.

SET ANSI_WARNINGS ON
GO
CREATE TRIGGER ...
Ensuite, assurez vous avant d'executer votre code que les paramètres sont
correctement passés à votre connexion.

HTH,
Lionel Billon (MVP)



"ILyasse" a écrit :

Bonjour,

Sur SQL server 2000, j'ai un trigger qui update une table situé sur un autre
server.
J'utilise le Linked_server, seulement quand le trigger est lancé,j'ai le
message d'erreur suivant : "Heterogeneous queries require the ANSI_NULLS and
ANSI_WARNINGS trigger".

J'ai appliqué les solutions que j 'ai trouvé dans certains forum à savoir

SET ANSI_NULLS ON
SET ANSI_WARNINGS ON
GO en tête du trigger mais rien à faire, toujours le même message d'erreur.
Aussi j'ai tenté de placer ces SET ANSI_NULLS,... au dessus de chaque query...
SET ANSI_NULLS ON
SET ANSI_WARNINGS ON
set xact_abort on
update servername.dbname.dbo.table ...

Mais rien à faire toujours le même problème. Est-ce quelqu'un à une solution
s'il vous plait ?