Вновь прошу помощи. при сбросе подключения пропадают записи, счетчик тикает с учетом пропавших записей. Microsoft SQL Server Management Studio 9.00.3042.00 Клиентские средства служб Microsoft Analysis Services 2005.090.3042.00 Компоненты доступа к данным (MDAC) 2000.086.3959.00 (srv03_sp2_rtm.070216-1710) PHP Version 5.2.17 Ситуация следующая (проект рабочий), везде заходим из под одного и того же пользователя, в системе присутствуют модули работы с данной таблицей, которые работают нормально, при этом обращение к таблице идет через один и тот же класс (подключение, выполнение запроса, отключение): 1. PHP скрипт отрабатывает обращение к базе инструкцией INSERT, 2. после чего в том же скрипте выполняется проверка существования записи (так на дурака), которая показывает, что запись существует, при этом возвращает ее ID, скрипт завершен. 3. Далее соединение разрывается. 4. В другом скрипте, формируется соединение, производится попытка поиска сформированной строки - результат строка не найдена. 5. Входим из под Microsoft SQL Server Management Studio - формируем точно такой же запрос, который выполнял проверку на 2 шаге - результат строка не найдена. 6. из под Microsoft SQL Server Management Studio формируем запрос INSERT, который отрабатывался на 1 шаге 7. из под Microsoft SQL Server Management Studio просматриваем базу - строка шага 7 существует, ее ID на 1 более нежели результат на шаге 2. 8. разрываем соединение и выходим из Microsoft SQL Server Management Studio 9. Входим из под Microsoft SQL Server Management Studio, просматриваем базу - строки созданные на всех вышеописанных шагах отсутствуют, при этом их индексы не посчитаны не в общем количестве записей, не в порядковом коде, при этом очередное добавление записи учитывает прирост индекса на всех описанных шагах. попробую описать ситуацию примером: исходное состояние таблицы, 1 запись с индексом 1 PHP > соединение => INSERT .... => SELECT id FROM ... => результат 2 =>разрыв соединения PHP > соединение => SELECT id FROM ... => результат 1 =>разрыв соединения Microsoft SQL Server Management Studio > соединение => SELECT id FROM ... => результат 1 => INSERT .... => SELECT id FROM ... => результат 3 =>разрыв соединения Microsoft SQL Server Management Studio > соединение => SELECT id FROM ... => результат 1 => INSERT .... => SELECT id FROM ... => результат 4 =>разрыв соединения голову уже сломал, конечно же в рабочей таблице не одна запись, а более 100 тыс. записей, пробовал все эти действия на развернутой копии, там все работает нормально, ненормального поведения не наблюдается. следовательно делаю заключение, что все та-ки это не логика, на таблицу навешаны триггеры, ключи, ограничения и индексы, все проверял. В ограничениях заданы значения по умолчанию (бред но это так), все записи ключей, касаемые создаваемых записей существуют, в триггерах операций удаления не присутствует, триггеры вообще не видоизменяют текущую таблицу, просто формируют записи в других таблицах). подскажите что может быть, кто-то сталкивался с таким ?
У вас может быть выключен режим неявных транзакций - это когда после каждого sql-запроса mssql делает commit (фиксирует транзакцию). Симптомы один в один - коннекция разорвалась, транзакция откатилась. Попробуйте после установки соединения с базой выполнить команду Код (Text): SET IMPLICIT_TRANSACTIONS ON Это установит режим неявных транзакций на всю сессию. Иначе нужно явно вызывать commit