Bonjour

je rencontre un problème avec la gestion des ANSI_NULLS et ANSI_WARNINGS depuis php (v 5.2).

mon serveur sql est SQLServer 2008.

ma requête :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
SELECT Nom_Naissance, Nom, Prenom, NumeroBadge, 
Nom_Entreprise, 
LEFT(Prenom, 1) + LEFT(Nom, 1) + NumeroBadge AS CodeEmploye, 
Nom+' '+Prenom+' '+NumeroBadge as Identite 
FROM ( 
SELECT CASE WHEN isnull(Nom_Epoux, '') <> '' THEN Nom_Epoux ELSE Nom_Naissance END AS Nom, 
CASE 
WHEN len(ltrim(rtrim(Numero_Badge))) > 0 THEN LEFT('000000', 6 - len(ltrim(rtrim(Numero_Badge)))) + ltrim(rtrim(Numero_Badge)) 
ELSE '000000' END AS NumeroBadge, 
Numero_Badge,Nom_Naissance, Prenom,Nom_Entreprise 
 
FROM Serveur.PEGASE.dbo.v_Personne 
) AS V 
ORDER BY Nom asc,Prenom asc
me retourne le message :

Les requêtes hétérogènes requièrent les options ANSI_NULLS et ANSI_WARNINGS pour être définies pour la connexion. Cela assure la cohérence sémantique de la requête. Activez ces options et réexécutez la requête.

Pas de problème, j'ajoute :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
SET ANSI_NULLS ON
SET ANSI_WARNINGS ON
GO
 
requete précédente
GO
 
SET ANSI_NULLS OFF
SET ANSI_WARNINGS OFF
GO
Et cela fonctionne très bien.

Cela se corse si je lance ma requête depuis PHP (avec mssql):

J'obtiens :
Could not query the Microsoft SQL server: Incorrect syntax near 'GO'.

Je transforme ma requête :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
SET ANSI_NULLS ON ;
SET ANSI_WARNINGS ON ;
 
requete précédente ;
 
SET ANSI_NULLS OFF ;
SET ANSI_WARNINGS OFF ;
Mais le message devient :
Could not query the Microsoft SQL server: Heterogeneous queries require the ANSI_NULLS and ANSI_WARNINGS
options to be set for the connection. This ensures consistent query semantics. Enable these options and then reissue
your query.

Pourriez-vous m'aider à résoudre ce problème

Merci