OVH Cloud OVH Cloud

Serveur lié et proèdure stockée

2 réponses
Avatar
Otra
Bonjour,

SQL 2000
je voudrais savoir comment éxécuter une procédure stockée qui passe
ansi_nulls et ansi_warnings à ON.
cette procédure stockée doit être appelée par un programme et ensuite la
connexion qui l'a appelée devrait avoir ces options configurées à ON (c'est
ce qui est écrit dans la doc) jusqu'à ce qu'elle soit fermée.
de cette façon on peut faire des opérations sur un serveur lié en SQL 2000
aussi mais sous un autre classement.
seulement à la sortie de la procédure stockée, on se retrouve avec les
options remises à OFF alors qu'on a pas changé de connexion. si on exécute
la commande dans l'analyseur de requêtes, on garde les paramètres bien
positionnés pour la connexion mais si on essaie de les configurer par le
biais d'une procédure stockée, ils disparaissent immédiatement lorsqu'elle
se termine.(?????)

Si quelq'un a déja rencontré le problème et l'a résolu, ou a une autre
solution à proposer (sans déplacer les bases de données) je suis preneur.

2 réponses

Avatar
Med Bouchenafa[MVP]
Il y a une subtilité à prendre en contact dans ce cas.
Il y a deux options QUOTED_IDENTIFIER et ANSI_NULLS dont l'état est
enregistrée de manière transparente dans la procédure elle-même
Ce qui compte, c'est la valeur qu'elles ont au moment de la création ou de
la modification de la procédure.
Les modifier à l'intérieur de la procédure ne les changera pas.
Ce qui n'est pas le cas de ANSI_WARNINGS dont la valeur prise en compte est
celle à l'intérieur.
Il faudrait donc que tu réécrives tes procédures dans l'analyseur de
requêtes comme suit

SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO

ALTER PROCEDURE....
AS
SET ANSI_WARNINGS ON
....
....
.....
....
--fin procédure

GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS OFF
GO

J'espère avoir été clair car c'est pas évident

--
Bien cordialement
Med Bouchenafa
TETRASET
75015 Paris

"Otra" <informatique@@uesl.fr> wrote in message
news:
Bonjour,

SQL 2000
je voudrais savoir comment éxécuter une procédure stockée qui passe
ansi_nulls et ansi_warnings à ON.
cette procédure stockée doit être appelée par un programme et ensuite la
connexion qui l'a appelée devrait avoir ces options configurées à ON


(c'est
ce qui est écrit dans la doc) jusqu'à ce qu'elle soit fermée.
de cette façon on peut faire des opérations sur un serveur lié en SQL 2000
aussi mais sous un autre classement.
seulement à la sortie de la procédure stockée, on se retrouve avec les
options remises à OFF alors qu'on a pas changé de connexion. si on exécute
la commande dans l'analyseur de requêtes, on garde les paramètres bien
positionnés pour la connexion mais si on essaie de les configurer par le
biais d'une procédure stockée, ils disparaissent immédiatement lorsqu'elle
se termine.(?????)

Si quelq'un a déja rencontré le problème et l'a résolu, ou a une autre
solution à proposer (sans déplacer les bases de données) je suis preneur.




Avatar
Otra
Merci de votre réponse.

Nous n'avions pas essayé de ALTER TABLE. je ferais un retour la-dessus lundi
de retour au bureau.

Précisions :
le problème est que le paramètre ANSI_WARNINGS est mal positionné et bloque
le traitement sur le serveur lié.
nous nous sommes rendus compte que le fait de le mettre lui seul à ON
permettait d'excuter les procédures stockées.
Cependant il n'est pas conservé à la sortie de la procédure stockée et
repasse à OFF.
le fait de le rajouter dans chacune des procédures stockées concernées n'est
pas dérangeant dans notre cas au vu du faible nombre de requêtes en cause
mais avec les passages de paramètres il est difficile de l'intégrer dans une
procédure stockée (le GO de fin de positionnement de ANSI_WARNINGS nous fait
perdre les paramètres).
Nous ne voyons pas comment conserver nos paramètres dans les procédures
stockées après la fin de transaction qui applique le paramètre
ANSI_WARNINGS, ce qui pourrait constituer une autre solution au problème

Cordialement
Bon Week-end à tous