Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
яфчы21
Guest |
Бред какой-то.. Имею TADOConnection, MS SQL 2008 Пишу Conn.Execute('select distinct clt_auto into #trt from #searchkeys'); Conn.Execute('delete from #searchkeys'); Conn.Execute('insert into #searchkeys select clt_auto from #trt'); Conn.Execute('drop table #trt'); В результате в #searchkeys остаются повторяющиеся значения. На постоянных таблицах все нормально. Не знаю, в дельфи ли дело или в сервере |
3 авг 12, 14:33 [12958756] Ответить | Цитировать Сообщить модератору |
смотришь из под
Guest |
яфчы21, а повторяющиеся значения смотришь из под management studio? |
3 авг 12, 14:36 [12958777] Ответить | Цитировать Сообщить модератору |
яфчы21
Guest |
смотришь из под, из-под management studio не видно временных таблиц, созданных в другом коннекте. |
3 авг 12, 14:39 [12958797] Ответить | Цитировать Сообщить модератору |
daw Member Откуда: Муром -> Москва Сообщений: 7381 |
а профайлером если посмотреть? Posted via ActualForum NNTP Server 1.5 |
3 авг 12, 14:47 [12958859] Ответить | Цитировать Сообщить модератору |
созданных в другом коннекте
Guest |
о! внезапно. а в другом батче? |
||
3 авг 12, 14:50 [12958885] Ответить | Цитировать Сообщить модератору |
яфчы21
Guest |
Что у Вас внезапно? |
||||
3 авг 12, 14:58 [12958943] Ответить | Цитировать Сообщить модератору |
яфчы21
Guest |
Что интересно, просто select distinct clt_auto from #searchkeys, возвращает уникальные значения "а профайлером если посмотреть?" Уже обошел (некогда лезть в профайлер). Если кто-то знает причину проблемы, просьба отписаться |
3 авг 12, 15:02 [12958989] Ответить | Цитировать Сообщить модератору |
Zelius Member Откуда: Россия, Москва Сообщений: 1523 |
яфчы21, возможно ошибки вылезают, которые глушатся... может стоит попробовать одним вызовом все сделать с установкой SET NOCOUNT ON и SET XACT_ABORT ON |
3 авг 12, 15:32 [12959210] Ответить | Цитировать Сообщить модератору |
iap Member Откуда: Москва Сообщений: 47047 |
Я уже давно заметил, что один компонент TADOConnection вовсе не эквивалентен одной сессии на SQL сервере. Вот если отправить скрипт одной строкой, то да, с временными таблицами будет порядок. Conn.Execute ( 'select distinct clt_auto into #trt from #searchkeys;' +'delete from #searchkeys;' +'insert into #searchkeys select clt_auto from #trt;' +'drop table #trt;' );Правда, откуда взялась таблица #searchkeys, остаётся неясным... |
3 авг 12, 15:43 [12959285] Ответить | Цитировать Сообщить модератору |
Гавриленко Сергей Алексеевич Member Откуда: Moscow Сообщений: 37143 |
|
||
3 авг 12, 15:45 [12959300] Ответить | Цитировать Сообщить модератору |
яфчы21
Guest |
Ну потрейсите, если не впадлу |
||||
3 авг 12, 19:10 [12960491] Ответить | Цитировать Сообщить модератору |
Гавриленко Сергей Алексеевич Member Откуда: Moscow Сообщений: 37143 |
|
||
3 авг 12, 19:11 [12960492] Ответить | Цитировать Сообщить модератору |
яфчы21
Guest |
#searchkeys создается выше тем же ADOConnection (один раз). Если TADOConnection по какой-то причине создавал при прошлых запусках несколько сессий, то временная таблица, созданная в одной, не была бы видна в другой. Получил бы исключение без всякого профайлера. А так - код выполнился без ошибок. Сейчас попробовал запустить тот же код с теми же данными - теперь все правильно. Но чудес же не бывает... Интересно, сам сервер не может так весело "глючить"? Хотя, в целом, вопрос "проехан" |
||
3 авг 12, 19:15 [12960502] Ответить | Цитировать Сообщить модератору |
Гавриленко Сергей Алексеевич Member Откуда: Moscow Сообщений: 37143 |
|
||||
3 авг 12, 19:18 [12960510] Ответить | Цитировать Сообщить модератору |
яфчы21
Guest |
смотрите: select distinct clt_auto from #searchkeys возвращал уникальные значения, а select distinct clt_auto into #trt from #searchkeys заполнял создаваемую #trt неуникальными. Может быть, есть какие-то особенности в select into, которые могли приводить к такому поведению сервера, и которых я не знаю? |
||
3 авг 12, 19:19 [12960514] Ответить | Цитировать Сообщить модератору |
яфчы
Guest |
Ну и зря интересная вещь. Если же в посте содержался некий вопрос - то с соединением ровным счетом ничего не происходит, Active = true при старте, и все. Программа работает по линейному алдгоритму 10-15 секунд |
||||
3 авг 12, 19:34 [12960549] Ответить | Цитировать Сообщить модератору |
daw Member Откуда: Муром -> Москва Сообщений: 7381 |
> Может быть, есть какие-то особенности в select into, которые могли приводить > к такому поведению сервера, и которых я не знаю? документированных - нет. это было бы багом. но вместе с заявлением о баге нужно уже репро приводить - скрипт/программу, подробное описание последовательности действий, которые воспроизводят проблему. а когда даже доподлинно неизвестно, что на сервере выполняется (а без трассы об этом можно только догадки строить) - это вообще ни о чем. были ли баги, при которых distinct возвращал дубликаты? да, были. но на более сложных запросах, когда есть где ошибиться с планом. в данном случае - очень сильно сомневаюсь. скорее всего, причина в чем-то другом. про то, что #trt заполнялась неуникальными значениями вы наверняка говорить не можете - вы же не делали выборку непосредственно из нее? про "Получил бы исключение без всякого профайлера" - это тоже все лирика. может и не получили бы - осталась в сессии таблица #searchkeys от каких-то ваших экспериментов. да мало ли что там быть могло. без _хотя бы_ трассы, которая подтвердила бы, что все ваши запросы действительно выполнялись на сервере в одной сессии и именно в таком порядке, серьезно тут говорить просто не о чем. dixi. |
3 авг 12, 21:23 [12960901] Ответить | Цитировать Сообщить модератору |
vlas Member Откуда: Москва Сообщений: 112 |
Смотри Область видимости временных таблиц SQL SERVER |
4 авг 12, 13:54 [12961926] Ответить | Цитировать Сообщить модератору |
alexeyvg Member Откуда: Moscow Сообщений: 31780 |
|
||
4 авг 12, 14:33 [12962036] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |