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 : 
Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
sqlsrv_num_rows($lienbase)
Un parcours avec un fetch dans un simple while :


Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 :
Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
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.

Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
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

Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
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).

Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
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.