Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 MSSQL отдает не все данные  [new]
Labutin
Member

Откуда: Нижний Новгород
Сообщений: 60
Входные данные:
OS Centos 5.2
PHP 5.3.3
Microsoft SQL Server 2000
FreeTDS 0.82

Есть SQL запрос:
select * from table where date > '2011-10-27 11:00:00'

В Query Analyzer этот запрос возвращает порядка 9 тыс. строк. В общем все правильно.
При запросе из PHP mssql_query возвращает рандомное кол-во строк!!!! В редких исключениях правильное значение :(
т.е. код
$result = mssql_query($query);
echo mssql_num_rows($result);
печатает совершенное разные кол-числа
например, 30, 100 и т.п. и лишь иногда 9 тыс. (правильно).
При этом НИКАКИХ ошибок нет!!!
Ума не приложу куда копать :(
Query Analyzer стоит на том же сервере, PHP работает на соседнем.

Замечено, что проблема только когда днем MSSQL сервер сильно нагружен (на нем база 1С). Ночью никаких проблем нет!

Смущает тот факт, что выдавая заниженное кол-во строк нет ошибок!
Кстати, если потом перебрать строки
while ($row = mssql_fetch_assoc($result))
то выдается именно то (неправильное) кол-во строк, которое дает mssql_num_rows

Вот такая аномалия, с которой я не знаю как разобраться. Требуется ваша помощь.
27 окт 11, 15:41    [11510036]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL отдает не все данные  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
И вы уже выяснили, какая команда уходит на сервер?
27 окт 11, 15:47    [11510100]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL отдает не все данные  [new]
Labutin
Member

Откуда: Нижний Новгород
Сообщений: 60
В смысле, какая команда?
mssql_query($query);

$query при этом равен select * from table where date > '2011-10-27 11:00:00' и для проведения теста и выявления проблемы $query при всех экспериментах не меняется.
27 окт 11, 15:51    [11510150]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL отдает не все данные  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Labutin
В смысле, какая команда?
mssql_query($query);

$query при этом равен select * from table where date > '2011-10-27 11:00:00' и для проведения теста и выявления проблемы $query при всех экспериментах не меняется.
Я не спрашивал, чему равно значение переменной. Я спрашивал, какая команда передается серверу.
27 окт 11, 15:52    [11510158]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL отдает не все данные  [new]
Anatoly Podgoretsky
Member

Откуда:
Сообщений: 62908
Labutin
В смысле, какая команда?
mssql_query($query);

$query при этом равен select * from table where date > '2011-10-27 11:00:00' и для проведения теста и выявления проблемы $query при всех экспериментах не меняется.

Это же PHP, а вопрос был про команду SQL Server
27 окт 11, 16:02    [11510275]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL отдает не все данные  [new]
Labutin
Member

Откуда: Нижний Новгород
Сообщений: 60
Как узнать, какая команда уходит на сервер?
Просто я не понимаю, о каких командах идет речь :( И кто их формирует.
27 окт 11, 16:04    [11510284]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL отдает не все данные  [new]
env
Member

Откуда: Россия, Москва
Сообщений: 7498
Labutin,

На стороне sql server включите profiler и посмотрите, какие запросы (и в каком окружении) приходят от приложения.
27 окт 11, 16:16    [11510396]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить