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

Откуда:
Сообщений: 4
Вновь прошу помощи.

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 тыс. записей, пробовал все эти действия на развернутой копии, там все работает нормально, ненормального поведения не наблюдается. следовательно делаю заключение, что все та-ки это не логика, на таблицу навешаны триггеры, ключи, ограничения и индексы, все проверял. В ограничениях заданы значения по умолчанию (бред но это так), все записи ключей, касаемые создаваемых записей существуют, в триггерах операций удаления не присутствует, триггеры вообще не видоизменяют текущую таблицу, просто формируют записи в других таблицах).

подскажите что может быть, кто-то сталкивался с таким ?
22 июн 13, 13:09    [14469112]     Ответить | Цитировать Сообщить модератору
 Re: Пропадают записи в MS-SQL  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22550
обратитесь к Вашим тестировщикам, пусть найдут как повторить баг, это же их работа
22 июн 13, 13:14    [14469119]     Ответить | Цитировать Сообщить модератору
 Re: Пропадают записи в MS-SQL  [new]
invm
Member

Откуда: Москва
Сообщений: 9836
У вас, скорее всего, классическая ошибка -- транзакция открывается, но не подтверждается. В результате, при разрыве соединения, она откатывается.
А ID у вас identity-столбец, который нетранзакционен. Поэтому и получаются "дырки" в его значениях.

И отлавливать это нужно отслеживая профайлером какие инструкции реально выполняются в проблемном соединении.
22 июн 13, 13:40    [14469157]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить