Bonjour,
un cas des plus gênant la semaine dernière, sur une base en production de quelques dizaines de tables :
exécution d'une requête :
SELECT TOP 10000 * FROM ENMPNEW.dbo.brxb WHERE bx_cannee IN (2020,2021)
Nombre de lignes annoncées : 683 (et c'est bien ce qui est attendu, en vérifiant via SSMS) avec :
sqlsrv_num_rows($lienbase)
Un parcours avec un fetch dans un simple while :
while ($row = sqlsrv_fetch_array($lienbase, SQLSRV_FETCH_ASSOC)) { nblu++ ; }
ne me fournit que les 10 premières lignes, sans aucune erreur, il en manque 673.
D'autres formulations sont testées :
SELECT * FROM ENMPNEW.dbo.brxb WHERE bx_cannee IN (2020,2021) ORDER BY bx_cbrxb DESC
Une seule ligne parcourue pour les 683 annoncées.
SELECT * FROM ENMPNEW.dbo.brxb WHERE bx_cannee IN (2020,2021) ORDER BY bx_cannee DESC
ne fournit aucune ligne sur les 683 annoncées
SELECT * FROM ENMPNEW.dbo.brxb WHERE bx_cannee IN (2020,2021) ORDER BY bx_cannee ASC
Me fournit cette fois les deux premières lignes des 683 qui sont toujours annoncées.
Pour cette table en particulier, jamais d'erreur signalée nulle part, pourtant quelle que soit la requête exécutée, le nombre de lignes parcourues ne correspond pas à la réalité, une chance que je m'en sois aperçu.
Même un parcours global sans clause WHERE ne me permet de lister que 41 des 8370 lignes en base (et annoncées).
SELECT * FROM ENMPNEW.dbo.brxb ORDER BY bx_cannee ASC
Sans le "ORDER BY" j'arrive à en lister 1493.
J'ai mis à jour le système ubuntu 20.04LTS, (5.4.0-89-generic) ainsi que les diverses bibliothèques et rebooté le système, en vain.
J'ai également reconstruit les index (en l'occurrence sur la colonne bx_cbrxb) et mis à jour les statistiques dans mssql.
Quelques précisions infra, j'ai tenté en passer en PHP8.1 mais il me faut passer en version 5.10beta pour les bibliothèques, testé mais en vain.
mssql-server is already the newest version (15.0.4188.2-3)
PHPINFO
PHP Version 8.0.14
pdo_sqlsrv
pdo_sqlsrv support enabled
ExtensionVer 5.9.0
Directive Local Value Master Value
pdo_sqlsrv.client_buffer_max_kb_size 10240 10240
pdo_sqlsrv.log_severity 0 0
pdo_sqlsrv.report_additional_errors 1 1
pdo_sqlsrv.set_locale_info 2 2
sqlsrv
sqlsrv support enabled
ExtensionVer 5.9.0
Directive Local Value Master Value
sqlsrv.ClientBufferMaxKBSize 10240 10240
sqlsrv.LogSeverity 0 0
sqlsrv.LogSubsystems 0 0
sqlsrv.SetLocaleInfo 2 2
sqlsrv.WarningsReturnAsErrors On On
Toute suggestion est la bienvenue...
R. Maillard.
Partager