OVH Cloud OVH Cloud

Erreur SET QUOTED IDENTIFIER

5 réponses
Avatar
Pierre BOUSQUET
Bonjour,

J'ai ce message d'erreur lorsque j'execute un INSERT depuis un trigger.
Si j'isole cette requete et que je l'execute dans l'analyseur de
requete : pas de probleme.

Avez vous une idée ?

Merci d'avance

--
Pierre BOUSQUET

" Ne me dites pas que ce problème est difficile.
S'il n'était pas difficile, ce ne serait pas un problème. "

5 réponses

Avatar
SQLpro
Bonjour,

Pierre BOUSQUET a écrit :

Bonjour,

J'ai ce message d'erreur lorsque j'execute un INSERT depuis un trigger.
Si j'isole cette requete et que je l'execute dans l'analyseur de
requete : pas de probleme.

Avez vous une idée ?



Comment voulez-vous que l'on vous aide si vous ne postez pas :
1) les requêtes en cause ?
2) le message EXACT avec n° de l'erreur ?

Ayez au moins la politesse de commencer par décrire proprement et avec
le maximum de renseignements votre problème !


Merci d'avance

--
Pierre BOUSQUET

" Ne me dites pas que ce problème est difficile.
S'il n'était pas difficile, ce ne serait pas un problème. "



A +

--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage
SQL
Le site sur le langage SQL et les SGBDR :
http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning,
optimisation
********************* http://www.datasapiens.com ***********************
Avatar
SQLpro
Bonjour,

Pierre BOUSQUET a écrit :

Bonjour,

J'ai ce message d'erreur lorsque j'execute un INSERT depuis un trigger.
Si j'isole cette requete et que je l'execute dans l'analyseur de
requete : pas de probleme.

Avez vous une idée ?



Comment voulez-vous que l'on vous aide si vous ne postez pas :
1) les requêtes en cause ?
2) le message EXACT avec n° de l'erreur ?

Ayez au moins la politesse de commencer par décrire proprement et avec
le maximum de renseignements votre problème !


Merci d'avance

--
Pierre BOUSQUET

" Ne me dites pas que ce problème est difficile.
S'il n'était pas difficile, ce ne serait pas un problème. "



A +

--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage
SQL
Le site sur le langage SQL et les SGBDR :
http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning,
optimisation
********************* http://www.datasapiens.com ***********************
Avatar
Pierre BOUSQUET
Voila le trigger

CREATE TRIGGER TEST_CBINS_F_DOCLIGNE ON F_DOCLIGNE FOR INSERT WITH
APPEND AS

DELETE FROM ZZ_TEST

IF EXISTS(SELECT 'a' FROM INSERTED WHERE do_domaine=0 AND do_type=1 AND
LEFT(ar_ref,2)!='UG')
BEGIN
INSERT INTO ZZ_TEST (test) VALUES ('1. Pièce concernée')

DECLARE @val int

SELECT @val = pcr_ug FROM Z_PCR_UG,INSERTED WHERE
Z_PCR_UG.ct_num=INSERTED.ct_num AND Z_PCR_UG.ar_ref=INSERTED.ar_ref

INSERT INTO ZZ_TEST (test) VALUES ('2. valeur pcr : '+CAST(@val as
Char(20)))

IF @val!=0
BEGIN
DECLARE @DlNo int

SELECT @DlNo = F_DOCLIGNE.dl_no FROM F_DOCLIGNE,INSERTED WHERE
F_DOCLIGNE.do_piece=INSERTED.do_piece AND
F_DOCLIGNE.ar_ref='UG'+INSERTED.ar_ref

INSERT INTO ZZ_TEST (test) VALUES ('3. valeur dl_no : '+CAST(@DlNo as
Char(20)))

-- On calcule la quantité
SELECT @val = dl_qte*@val/100 FROM INSERTED

-- On a pas trouvé la ligne donc on va la créer
IF @DlNo=0
BEGIN
DECLARE @NumLigne int

SELECT @NumLigne = dl_ligne+1 FROM INSERTED
SELECT @DlNo = dl_no FROM INSERTED

INSERT INTO F_DOCLIGNE
(DO_Domaine,DO_Type,CT_Num,DO_Piece,DL_PieceBC,DL_PieceBL,DO_Date,DL_DateBC,DL_DateBL,DL_Ligne,DO_Ref,DL_TNomencl,DL_TRemPied,DL_TRemExep,AR_Ref,DL_Design,DL_Qte,DL_QteBC,DL_QteBL,DL_PoidsNet,DL_PoidsBrut,DL_Remise01REM_Valeur,DL_Remise01REM_Type,DL_Remise02REM_Valeur,DL_Remise02REM_Type,DL_Remise03REM_Valeur,DL_Remise03REM_Type,DL_PrixUnitaire,DL_PUBC,DL_Taxe1,DL_TypeTaux1,DL_TypeTaxe1,DL_Taxe2,DL_TypeTaux2,DL_TypeTaxe2,RE_No,AG_No1,AG_No2,DL_PrixRU,DL_CMUP,DL_MvtStock,GL_No,AF_RefFourniss,EU_Enumere,EU_Qte,DL_TTC,DE_No,DL_NoRef,DL_TypePL,DL_PUDevise,DL_PUTTC,DO_DateLivr,CA_Num,DL_Taxe3,DL_TypeTaux3,DL_TypeTaxe3,DL_Frais,DL_Valorise,AR_RefCompose,DL_NonLivre,AC_RefClient,DL_MontantHT,DL_MontantTTC,DL_FactPoids,DL_Escompte,qte_autorisee,qte_envoyee_bics)
SELECT
DO_Domaine,DO_Type,CT_Num,DO_Piece,DL_PieceBC,DL_PieceBL,DO_Date,DL_DateBC,DL_DateBL,dl_Ligne+1,DO_Ref,DL_TNomencl,DL_TRemPied,DL_TRemExep,'UG'+AR_Ref,DL_Design,@val,@val,@val,DL_PoidsNet,DL_PoidsBrut,DL_Remise01REM_Valeur,DL_Remise01REM_Type,DL_Remise02REM_Valeur,DL_Remise02REM_Type,DL_Remise03REM_Valeur,DL_Remise03REM_Type,DL_PrixUnitaire,DL_PUBC,DL_Taxe1,DL_TypeTaux1,DL_TypeTaxe1,DL_Taxe2,DL_TypeTaux2,DL_TypeTaxe2,RE_No,AG_No1,AG_No2,DL_PrixRU,DL_CMUP,DL_MvtStock,GL_No,AF_RefFourniss,EU_Enumere,EU_Qte,DL_TTC,DE_No,DL_NoRef,DL_TypePL,DL_PUDevise,DL_PUTTC,DO_DateLivr,CA_Num,DL_Taxe3,DL_TypeTaux3,DL_TypeTaxe3,DL_Frais,DL_Valorise,AR_RefCompose,DL_NonLivre,AC_RefClient,DL_MontantHT,DL_MontantTTC,DL_FactPoids,DL_Escompte,qte_autorisee,qte_envoyee_bics
FROM F_DOCLIGNE WHERE dl_no=@DlNo

Return
END
-- Modification de la ligne
INSERT INTO ZZ_TEST (test) VALUES ('99. Update réalisé de '+CAST(@val
as Char(20)))
UPDATE F_DOCLIGNE SET dl_qte=dl_qte+@val WHERE dl_no=@DlNo
END
END


ci-dessous le message d'erreur
Erreur de l'accès OLE DB.
Numéro d'erreur = 170129

Echec de l'ouverture du fichier.

Détail de l'erreur système :
Description = INSERT a échoué car les options SET suivantes comportent
des paramètres incorrects : 'QUOTED_IDENTIFIER'.
Source = Microsoft OLE DB Provider for SQL Server
SQL State = 42000
Error Number = -2147217900
Native Error Number = 1934



la requete "INSERT INTO F_DOCLIGNE" plante dans le trigger mais pas
lorsqu'elle est isolée


SQLpro a pensé très fort :
Bonjour,

Pierre BOUSQUET a écrit :

Bonjour,

J'ai ce message d'erreur lorsque j'execute un INSERT depuis un trigger.
Si j'isole cette requete et que je l'execute dans l'analyseur de
requete : pas de probleme.

Avez vous une idée ?



Comment voulez-vous que l'on vous aide si vous ne postez pas :
1) les requêtes en cause ?
2) le message EXACT avec n° de l'erreur ?

Ayez au moins la politesse de commencer par décrire proprement et avec
le maximum de renseignements votre problème !


Merci d'avance

--
Pierre BOUSQUET

" Ne me dites pas que ce problème est difficile.
S'il n'était pas difficile, ce ne serait pas un problème. "



A +



--
Pierre BOUSQUET

" Ne me dites pas que ce problème est difficile.
S'il n'était pas difficile, ce ne serait pas un problème. "
Avatar
Fred BROUARD
Pierre BOUSQUET a écrit :
Voila le trigger

CREATE TRIGGER TEST_CBINS_F_DOCLIGNE ON F_DOCLIGNE FOR INSERT WITH
APPEND AS

DELETE FROM ZZ_TEST

IF EXISTS(SELECT 'a' FROM INSERTED WHERE do_domaine=0 AND do_type=1 AND
LEFT(ar_ref,2)!='UG')
BEGIN
INSERT INTO ZZ_TEST (test) VALUES ('1. Pièce concernée')

DECLARE @val int

SELECT @val = pcr_ug FROM Z_PCR_UG,INSERTED WHERE
Z_PCR_UG.ct_num=INSERTED.ct_num AND Z_PCR_UG.ar_ref=INSERTED.ar_ref

INSERT INTO ZZ_TEST (test) VALUES ('2. valeur pcr : '+CAST(@val as
Char(20)))

IF @val!=0
BEGIN
DECLARE @DlNo int

SELECT @DlNo = F_DOCLIGNE.dl_no FROM F_DOCLIGNE,INSERTED WHERE
F_DOCLIGNE.do_piece=INSERTED.do_piece AND
F_DOCLIGNE.ar_ref='UG'+INSERTED.ar_ref

INSERT INTO ZZ_TEST (test) VALUES ('3. valeur dl_no :
'+CAST(@DlNo as Char(20)))

-- On calcule la quantité
SELECT @val = dl_qte*@val/100 FROM INSERTED

-- On a pas trouvé la ligne donc on va la créer
IF @DlNo=0
BEGIN
DECLARE @NumLigne int

SELECT @NumLigne = dl_ligne+1 FROM INSERTED
SELECT @DlNo = dl_no FROM INSERTED

INSERT INTO F_DOCLIGNE
(DO_Domaine,DO_Type,CT_Num,DO_Piece,DL_PieceBC,DL_PieceBL,DO_Date,DL_DateBC,DL_DateBL,DL_Ligne,DO_Ref,DL_TNomencl,DL_TRemPied,DL_TRemExep,AR_Ref,DL_Design,DL_Qte,DL_QteBC,DL_QteBL,DL_PoidsNet,DL_PoidsBrut,DL_Remise01REM_Valeur,DL_Remise01REM_Type,DL_Remise02REM_Valeur,DL_Remise02REM_Type,DL_Remise03REM_Valeur,DL_Remise03REM_Type,DL_PrixUnitaire,DL_PUBC,DL_Taxe1,DL_TypeTaux1,DL_TypeTaxe1,DL_Taxe2,DL_TypeTaux2,DL_TypeTaxe2,RE_No,AG_No1,AG_No2,DL_PrixRU,DL_CMUP,DL_MvtStock,GL_No,AF_RefFourniss,EU_Enumere,EU_Qte,DL_TTC,DE_No,DL_NoRef,DL_TypePL,DL_PUDevise,DL_PUTTC,DO_DateLivr,CA_Num,DL_Taxe3,DL_TypeTaux3,DL_TypeTaxe3,DL_Frais,DL_Valorise,AR_RefCompose,DL_NonLivre,AC_RefClient,DL_MontantHT,DL_MontantTTC,DL_FactPoids,DL_Escompte,qte_autorisee,qte_envoyee_bics)

SELECT
DO_Domaine,DO_Type,CT_Num,DO_Piece,DL_PieceBC,DL_PieceBL,DO_Date,DL_DateBC,DL_DateBL,dl_Ligne+1,DO_Ref,DL_TNomencl,DL_TRemPied,DL_TRemExep,'UG'+AR_Ref,DL_Design,@val,@val,@val,DL_PoidsNet,DL_PoidsBrut,DL_Remise01REM_Valeur,DL_Remise01REM_Type,DL_Remise02REM_Valeur,DL_Remise02REM_Type,DL_Remise03REM_Valeur,DL_Remise03REM_Type,DL_PrixUnitaire,DL_PUBC,DL_Taxe1,DL_TypeTaux1,DL_TypeTaxe1,DL_Taxe2,DL_TypeTaux2,DL_TypeTaxe2,RE_No,AG_No1,AG_No2,DL_PrixRU,DL_CMUP,DL_MvtStock,GL_No,AF_RefFourniss,EU_Enumere,EU_Qte,DL_TTC,DE_No,DL_NoRef,DL_TypePL,DL_PUDevise,DL_PUTTC,DO_DateLivr,CA_Num,DL_Taxe3,DL_TypeTaux3,DL_TypeTaxe3,DL_Frais,DL_Valorise,AR_RefCompose,DL_NonLivre,AC_RefClient,DL_MontantHT,DL_MontantTTC,DL_FactPoids,DL_Escompte,qte_autorisee,qte_envoyee_bics
FROM F_DOCLIGNE WHERE dl_no=@DlNo

Return
END
-- Modification de la ligne
INSERT INTO ZZ_TEST (test) VALUES ('99. Update réalisé de
'+CAST(@val as Char(20)))
UPDATE F_DOCLIGNE SET dl_qte=dl_qte+@val WHERE dl_no=@DlNo
END
END






Bizzare, à part que le trigger est horriblement mal écrit car vous
supposez qu'il n'y aura jamais qu'une seule ligne visée, ce qui est
contraire à la logique des triggers (et il pourrait être simplifié), je
ne voit pas la cause de ce problème.

Faites :

SELECT 1
WHERE @@OPTIONS & 256 = 256

Si la réponse n'est pas 1, faites :
SET QUOTED_IDENTIFIER ON

A +



ci-dessous le message d'erreur
Erreur de l'accès OLE DB.
Numéro d'erreur = 170129

Echec de l'ouverture du fichier.

Détail de l'erreur système :
Description = INSERT a échoué car les options SET suivantes
comportent des paramètres incorrects : 'QUOTED_IDENTIFIER'.
Source = Microsoft OLE DB Provider for SQL Server
SQL State = 42000
Error Number = -2147217900
Native Error Number = 1934



la requete "INSERT INTO F_DOCLIGNE" plante dans le trigger mais pas
lorsqu'elle est isolée


SQLpro a pensé très fort :
Bonjour,

Pierre BOUSQUET a écrit :

Bonjour,

J'ai ce message d'erreur lorsque j'execute un INSERT depuis un trigger.
Si j'isole cette requete et que je l'execute dans l'analyseur de
requete : pas de probleme.

Avez vous une idée ?



Comment voulez-vous que l'on vous aide si vous ne postez pas :
1) les requêtes en cause ?
2) le message EXACT avec n° de l'erreur ?

Ayez au moins la politesse de commencer par décrire proprement et avec
le maximum de renseignements votre problème !


Merci d'avance

--
Pierre BOUSQUET

" Ne me dites pas que ce problème est difficile.
S'il n'était pas difficile, ce ne serait pas un problème. "



A +







--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************
Avatar
Pierre BOUSQUET
j'avais essayé cette option à ON mais cela génère toujours la même
erreur

Fred BROUARD vient de nous annoncer :
Pierre BOUSQUET a écrit :
Voila le trigger

CREATE TRIGGER TEST_CBINS_F_DOCLIGNE ON F_DOCLIGNE FOR INSERT WITH APPEND
AS

DELETE FROM ZZ_TEST

IF EXISTS(SELECT 'a' FROM INSERTED WHERE do_domaine=0 AND do_type=1 AND
LEFT(ar_ref,2)!='UG')
BEGIN
INSERT INTO ZZ_TEST (test) VALUES ('1. Pièce concernée')

DECLARE @val int

SELECT @val = pcr_ug FROM Z_PCR_UG,INSERTED WHERE
Z_PCR_UG.ct_num=INSERTED.ct_num AND Z_PCR_UG.ar_ref=INSERTED.ar_ref

INSERT INTO ZZ_TEST (test) VALUES ('2. valeur pcr : '+CAST(@val as
Char(20)))

IF @val!=0
BEGIN
DECLARE @DlNo int

SELECT @DlNo = F_DOCLIGNE.dl_no FROM F_DOCLIGNE,INSERTED WHERE
F_DOCLIGNE.do_piece=INSERTED.do_piece AND
F_DOCLIGNE.ar_ref='UG'+INSERTED.ar_ref

INSERT INTO ZZ_TEST (test) VALUES ('3. valeur dl_no : '+CAST(@DlNo
as Char(20)))

-- On calcule la quantité
SELECT @val = dl_qte*@val/100 FROM INSERTED

-- On a pas trouvé la ligne donc on va la créer
IF @DlNo=0
BEGIN
DECLARE @NumLigne int

SELECT @NumLigne = dl_ligne+1 FROM INSERTED
SELECT @DlNo = dl_no FROM INSERTED

INSERT INTO F_DOCLIGNE
(DO_Domaine,DO_Type,CT_Num,DO_Piece,DL_PieceBC,DL_PieceBL,DO_Date,DL_DateBC,DL_DateBL,DL_Ligne,DO_Ref,DL_TNomencl,DL_TRemPied,DL_TRemExep,AR_Ref,DL_Design,DL_Qte,DL_QteBC,DL_QteBL,DL_PoidsNet,DL_PoidsBrut,DL_Remise01REM_Valeur,DL_Remise01REM_Type,DL_Remise02REM_Valeur,DL_Remise02REM_Type,DL_Remise03REM_Valeur,DL_Remise03REM_Type,DL_PrixUnitaire,DL_PUBC,DL_Taxe1,DL_TypeTaux1,DL_TypeTaxe1,DL_Taxe2,DL_TypeTaux2,DL_TypeTaxe2,RE_No,AG_No1,AG_No2,DL_PrixRU,DL_CMUP,DL_MvtStock,GL_No,AF_RefFourniss,EU_Enumere,EU_Qte,DL_TTC,DE_No,DL_NoRef,DL_TypePL,DL_PUDevise,DL_PUTTC,DO_DateLivr,CA_Num,DL_Taxe3,DL_TypeTaux3,DL_TypeTaxe3,DL_Frais,DL_Valorise,AR_RefCompose,DL_NonLivre,AC_RefClient,DL_MontantHT,DL_MontantTTC,DL_FactPoids,DL_Escompte,qte_autorisee,qte_envoyee_bics)

SELECT
DO_Domaine,DO_Type,CT_Num,DO_Piece,DL_PieceBC,DL_PieceBL,DO_Date,DL_DateBC,DL_DateBL,dl_Ligne+1,DO_Ref,DL_TNomencl,DL_TRemPied,DL_TRemExep,'UG'+AR_Ref,DL_Design,@val,@val,@val,DL_PoidsNet,DL_PoidsBrut,DL_Remise01REM_Valeur,DL_Remise01REM_Type,DL_Remise02REM_Valeur,DL_Remise02REM_Type,DL_Remise03REM_Valeur,DL_Remise03REM_Type,DL_PrixUnitaire,DL_PUBC,DL_Taxe1,DL_TypeTaux1,DL_TypeTaxe1,DL_Taxe2,DL_TypeTaux2,DL_TypeTaxe2,RE_No,AG_No1,AG_No2,DL_PrixRU,DL_CMUP,DL_MvtStock,GL_No,AF_RefFourniss,EU_Enumere,EU_Qte,DL_TTC,DE_No,DL_NoRef,DL_TypePL,DL_PUDevise,DL_PUTTC,DO_DateLivr,CA_Num,DL_Taxe3,DL_TypeTaux3,DL_TypeTaxe3,DL_Frais,DL_Valorise,AR_RefCompose,DL_NonLivre,AC_RefClient,DL_MontantHT,DL_MontantTTC,DL_FactPoids,DL_Escompte,qte_autorisee,qte_envoyee_bics
FROM F_DOCLIGNE WHERE dl_no=@DlNo

Return
END
-- Modification de la ligne
INSERT INTO ZZ_TEST (test) VALUES ('99. Update réalisé de
'+CAST(@val as Char(20)))
UPDATE F_DOCLIGNE SET dl_qte=dl_qte+@val WHERE dl_no=@DlNo
END
END






Bizzare, à part que le trigger est horriblement mal écrit car vous supposez
qu'il n'y aura jamais qu'une seule ligne visée, ce qui est contraire à la
logique des triggers (et il pourrait être simplifié), je ne voit pas la cause
de ce problème.

Faites :

SELECT 1
WHERE @@OPTIONS & 256 = 256

Si la réponse n'est pas 1, faites :
SET QUOTED_IDENTIFIER ON

A +



ci-dessous le message d'erreur
Erreur de l'accès OLE DB.
Numéro d'erreur = 170129

Echec de l'ouverture du fichier.

Détail de l'erreur système :
Description = INSERT a échoué car les options SET suivantes comportent
des paramètres incorrects : 'QUOTED_IDENTIFIER'.
Source = Microsoft OLE DB Provider for SQL Server
SQL State = 42000
Error Number = -2147217900
Native Error Number = 1934



la requete "INSERT INTO F_DOCLIGNE" plante dans le trigger mais pas
lorsqu'elle est isolée


SQLpro a pensé très fort :
Bonjour,

Pierre BOUSQUET a écrit :

Bonjour,

J'ai ce message d'erreur lorsque j'execute un INSERT depuis un trigger.
Si j'isole cette requete et que je l'execute dans l'analyseur de
requete : pas de probleme.

Avez vous une idée ?



Comment voulez-vous que l'on vous aide si vous ne postez pas :
1) les requêtes en cause ?
2) le message EXACT avec n° de l'erreur ?

Ayez au moins la politesse de commencer par décrire proprement et avec
le maximum de renseignements votre problème !


Merci d'avance

-- Pierre BOUSQUET

" Ne me dites pas que ce problème est difficile.
S'il n'était pas difficile, ce ne serait pas un problème. "



A +








--
Pierre BOUSQUET

" Ne me dites pas que ce problème est difficile.
S'il n'était pas difficile, ce ne serait pas un problème. "