Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Баг во время JOIN / 9 сообщений из 9, страница 1 из 1
29.10.2018, 17:05
    #39724641
X-Cite
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Баг во время JOIN
Я так понимаю это баг?

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
      SELECT
        snwb.No_,
        snwb.[Departure Name],
        wbd.*
      FROM
        Sync_Nav_WayBill AS snwb
        JOIN WayBillDeparture AS wbd
          ON wbd.WayBillDepartureName = snwb.[Departure Name]
      WHERE
        (snwb.Arch = 1) AND
        (snwb.[Starting Date] > @date_beg) AND
        (snwb.[Starting Date] < @date_end)
      ORDER BY
        snwb.No_
...
Рейтинг: 0 / 0
29.10.2018, 17:11
    #39724644
iap
iap
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Баг во время JOIN
X-Cite,

А где рисовался результат?
...
Рейтинг: 0 / 0
29.10.2018, 17:12
    #39724645
Гавриленко Сергей Алексеевич
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Баг во время JOIN
Не видно всего, что скрывается за звездочкой. Мало ли там полей, похожих по написанию на WayBillDepartureName.
Если так?

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
      SELECT
        snwb.No_,
        snwb.[Departure Name],
        wbd.WayBillDepartureName
      FROM
        Sync_Nav_WayBill AS snwb
        JOIN WayBillDeparture AS wbd
          ON wbd.WayBillDepartureName = snwb.[Departure Name]
      WHERE
        (snwb.Arch = 1) AND
        (snwb.[Starting Date] > @date_beg) AND
        (snwb.[Starting Date] < @date_end)
      ORDER BY
        snwb.No_
...
Рейтинг: 0 / 0
29.10.2018, 17:13
    #39724647
X-Cite
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Баг во время JOIN
В Студии...
Сервера 2014-ые sp1 cu3

Sync_Nav_WayBill - это синоним на таблицу на удаленном сервере
Если заменить его на сам объект через server.database.schema.table - бага нет.
...
Рейтинг: 0 / 0
29.10.2018, 17:14
    #39724649
X-Cite
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Баг во время JOIN
Гавриленко Сергей АлексеевичНе видно всего, что скрывается за звездочкой. Мало ли там полей, похожих по написанию на WayBillDepartureName.
Если так?

В таблице со * всего 2 поля, поэтому и вывел *
...
Рейтинг: 0 / 0
29.10.2018, 17:15
    #39724651
X-Cite
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Баг во время JOIN
Выполнил
Код: sql
1.
2.
3.
4.
DBCC FREEPROCCACHE
DBCC FREESESSIONCACHE
DBCC FREESYSTEMCACHE ('ALL')
DBCC DROPCLEANBUFFERS


И баг пропал..
Надо было наверное по 1 запускать и смотреть что повлияло...
...
Рейтинг: 0 / 0
29.10.2018, 17:17
    #39724653
iap
iap
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Баг во время JOIN
WayBillDepartureName - какого типа?
Да и [Departure Name].

Может, там, всё-таки, LEFT JOIN, а не JOIN?
...
Рейтинг: 0 / 0
31.10.2018, 12:24
    #39725723
wadegwadeg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Баг во время JOIN
Похоже на то, что Sync_Nav_WayBill - не синоним, а вьюха, определенная как select * from... - т.е. именно со звездочкой в select-list, а не со списком полей. Затем в исходной таблице происходит изменение списка полей, а с подобными вьюхами происходят спецэффекты.
Собственно, даже на sql.ru были какие-то образцовые примеры.
...
Рейтинг: 0 / 0
31.10.2018, 12:32
    #39725739
X-Cite
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Баг во время JOIN
wadegwadegПохоже на то, что Sync_Nav_WayBill - не синоним, а вьюха, определенная как select * from... - т.е. именно со звездочкой в select-list, а не со списком полей. Затем в исходной таблице происходит изменение списка полей, а с подобными вьюхами происходят спецэффекты.
Собственно, даже на sql.ru были какие-то образцовые примеры.
Не.. это синоним.. сам создавал..
Прикол в том что запрос выдавал + мусор
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
      SELECT
        snwb.No_,
        snwb.[Departure Name],
        wbd.*
      FROM
        Sync_Nav_WayBill AS snwb
        JOIN WayBillDeparture AS wbd
          ON wbd.WayBillDepartureName = snwb.[Departure Name]
      WHERE
        (snwb.Arch = 1) AND
        (snwb.[Starting Date] > @date_beg) AND
        (snwb.[Starting Date] < @date_end)
      ORDER BY
        snwb.No_


А запрос выдавал норм результат
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
      SELECT
        snwb.No_,
        snwb.[Departure Name],
       wbd.*
      FROM
        server.database.schema.table AS snwb
        JOIN WayBillDeparture AS wbd
          ON wbd.WayBillDepartureName = snwb.[Departure Name]
      WHERE
        (snwb.Arch = 1) AND
        (snwb.[Starting Date] > @date_beg) AND
        (snwb.[Starting Date] < @date_end)
      ORDER BY
        snwb.No_


При чем если в 1 запрос добавить любое условие фильтрации дополнительно, как запрос всегда выдавал верный результат.
Даже если просто прописать 1 = 1.
Сначала грешили на баг в криво посчитанном индексе. Ребилд индексов на удаленной таблице не помог.
Потом, после того как заменили синоним удаленным объектом, на который синоним ссылался и увидели верный результат, предположили что дело в кеше сервера, где выполняется запрос.
Сбросили весь кеш и все стало ОК.
Надеюсь такие фокусы пофиксили в последующих версиях и кумулятивах. Собираемся в этом году с 2014 переехать на 2017.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Баг во время JOIN / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]