Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / разница в поведении: SQL Server 2016 vs SQL Server 2019 / 25 сообщений из 39, страница 1 из 2
11.08.2020, 01:03
    #39988458
DBAshnik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
разница в поведении: SQL Server 2016 vs SQL Server 2019
вот такой простенький запрос прекрасно проходит и на 2016м сервере и на 2019м НО ТОЛЬКО(!) в SQL Server Management Studio:

Код: sql
1.
2.
select '<tr><td>' + replicate(' ', len( SomeField ))  + '</td> <td align=right>' +  
  from dbo.SomeTbl  



в некоем же ява-фреймворке (Talend) запрос работал только на 2016м, а после перевода на 2019й начал падать! Без обьяснения причин. Просто закрывает connection после однократного исполнения! :-(

(если же заменить len( SomeField ) на константу, напр. 9 то всё без ошибок отрабатывает и на 2019м тоже!)

Что скажете, эксперты? Баг? Фича?
...
Рейтинг: 0 / 0
11.08.2020, 01:12
    #39988459
Marat2020
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
разница в поведении: SQL Server 2016 vs SQL Server 2019
DBAshnik
вот такой простенький запрос прекрасно проходит и на 2016м сервере и на 2019м НО ТОЛЬКО(!) в SQL Server Management Studio

Возможно влияет то, что например в SSMS по умолчанию включен ARITHABORT.
SET ARITHABORT
Обрати пожалуйста внимание на ремарку по ссылке.
...
Рейтинг: 0 / 0
11.08.2020, 01:39
    #39988461
Marat2020
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
разница в поведении: SQL Server 2016 vs SQL Server 2019
Marat2020
DBAshnik
вот такой простенький запрос прекрасно проходит и на 2016м сервере и на 2019м НО ТОЛЬКО(!) в SQL Server Management Studio

Возможно влияет то, что например в SSMS по умолчанию включен ARITHABORT.
SET ARITHABORT
Обрати пожалуйста внимание на ремарку по ссылке.


Немножко не раскрыл до конца мысль - в общем проверь настройки соединения. КМК пакость может крыться там.
Что же касается на 2016-м фреймворк работал, а на 2019 фиг, то посмотри и сравни в свойствах серверов раздел Connection, есть ли разница. Может там собака порылась.
...
Рейтинг: 0 / 0
11.08.2020, 03:19
    #39988463
SERG1257
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
разница в поведении: SQL Server 2016 vs SQL Server 2019
Включи трейс и посмотри какая ошибка выдается.
...
Рейтинг: 0 / 0
11.08.2020, 06:54
    #39988472
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
разница в поведении: SQL Server 2016 vs SQL Server 2019
DBAshnik
Просто закрывает connection после однократного исполнения! :-(
Что скажете, эксперты? Баг? Фича?


Поработаю бабойвангой: база у тя битая. DBCC CHECKDB откроет те глаза. А может и спасет.
...
Рейтинг: 0 / 0
11.08.2020, 14:53
    #39988665
DBAshnik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
разница в поведении: SQL Server 2016 vs SQL Server 2019
aleks222
DBAshnik
Просто закрывает connection после однократного исполнения! :-(
Что скажете, эксперты? Баг? Фича?


Поработаю бабойвангой: база у тя битая. DBCC CHECKDB откроет те глаза. А может и спасет.


даааа, дельнейший совет! Спасибо большущее! Не допёр по неопытности с MsSQL (я старый ораклист) :-)
Короче вызов "DBCC CHECKDB" не заканчивается уже скоро как целый час!!! (На здоровых инстансах в прошлом, как помню, исполнялся за пару секунд...максимум...). Это ж уже показатель битой базы, да? Или не факт?
...
Рейтинг: 0 / 0
11.08.2020, 15:11
    #39988671
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
разница в поведении: SQL Server 2016 vs SQL Server 2019
DBAshnik
aleks222
пропущено...


Поработаю бабойвангой: база у тя битая. DBCC CHECKDB откроет те глаза. А может и спасет.


даааа, дельнейший совет! Спасибо большущее! Не допёр по неопытности с MsSQL (я старый ораклист) :-)
Короче вызов "DBCC CHECKDB" не заканчивается уже скоро как целый час!!! (На здоровых инстансах в прошлом, как помню, исполнялся за пару секунд...максимум...). Это ж уже показатель битой базы, да? Или не факт?


Время выполнения зависит от размеров и "за пару секунд" не выполняется.
На нагруженной базе - еще дольше.
...
Рейтинг: 0 / 0
11.08.2020, 16:33
    #39988700
andreymx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
разница в поведении: SQL Server 2016 vs SQL Server 2019
DBAshnik
aleks222
пропущено...


Поработаю бабойвангой: база у тя битая. DBCC CHECKDB откроет те глаза. А может и спасет.


даааа, дельнейший совет! Спасибо большущее! Не допёр по неопытности с MsSQL (я старый ораклист) :-)
Короче вызов "DBCC CHECKDB" не заканчивается уже скоро как целый час!!! (На здоровых инстансах в прошлом, как помню, исполнялся за пару секунд...максимум...). Это ж уже показатель битой базы, да? Или не факт?
тогда должон падать и простой

Код: sql
1.
2.
select len(SomeField)
  from dbo.SomeTbl

и не только в джаве
...
Рейтинг: 0 / 0
12.08.2020, 11:27
    #39988929
DBAshnik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
разница в поведении: SQL Server 2016 vs SQL Server 2019
aleks222
DBAshnik
пропущено...


даааа, дельнейший совет! Спасибо большущее! Не допёр по неопытности с MsSQL (я старый ораклист) :-)
Короче вызов "DBCC CHECKDB" не заканчивается уже скоро как целый час!!! (На здоровых инстансах в прошлом, как помню, исполнялся за пару секунд...максимум...). Это ж уже показатель битой базы, да? Или не факт?


Время выполнения зависит от размеров и "за пару секунд" не выполняется.
На нагруженной базе - еще дольше.


ага, ну да, это я уже усёк. Больше 5 часов на немаленькой базе это даже нормально вроде. Спасибо!

Всё-же гипотеза о битой базе НЕ подтвердилась (к сожалению!) :-(
Вызов
Код: sql
1.
DBCC CHECKDB (MyBasaPRD) WITH NO_INFOMSGS, ALL_ERRORMSGS  



в итоге ничего не выдал (просто строку о том что выполнилось successfully !)
...
Рейтинг: 0 / 0
12.08.2020, 11:30
    #39988934
DBAshnik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
разница в поведении: SQL Server 2016 vs SQL Server 2019
andreymx
DBAshnik
пропущено...


даааа, дельнейший совет! Спасибо большущее! Не допёр по неопытности с MsSQL (я старый ораклист) :-)
Короче вызов "DBCC CHECKDB" не заканчивается уже скоро как целый час!!! (На здоровых инстансах в прошлом, как помню, исполнялся за пару секунд...максимум...). Это ж уже показатель битой базы, да? Или не факт?
тогда должон падать и простой

Код: sql
1.
2.
select len(SomeField)
  from dbo.SomeTbl

и не только в джаве


блин, ну так в том то и фишечка, что он не падает в MSSMS (Studio) ! А только в java(Talend).
И такой вот не падает:
Код: sql
1.
2.
3.
4.
   select '<tr><td>' + cast( len( SomeField ) as varchar(3) )
      from   dbo.SomeTbl
   where  SomeFld2 = '001-D1'
   and    SomeFld3 in (23, 46)
...
Рейтинг: 0 / 0
12.08.2020, 11:44
    #39988943
DBAshnik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
разница в поведении: SQL Server 2016 vs SQL Server 2019
SERG1257
Включи трейс и посмотри какая ошибка выдается.


как конкретно это сделать из ява-сессии? (cорри, я в MsSQL новичёк полнейший, как уже сказал)
...
Рейтинг: 0 / 0
12.08.2020, 12:05
    #39988962
andreymx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
разница в поведении: SQL Server 2016 vs SQL Server 2019
А ты в студии топ 1000 пишешь?
...
Рейтинг: 0 / 0
12.08.2020, 12:52
    #39988994
DBAshnik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
разница в поведении: SQL Server 2016 vs SQL Server 2019
andreymx
А ты в студии топ 1000 пишешь?


и так и так _в студии_(!) работает. (и с топ 1000 и без)
...
Рейтинг: 0 / 0
12.08.2020, 13:08
    #39989008
DBAshnik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
разница в поведении: SQL Server 2016 vs SQL Server 2019
интересно, что вот так работает:

Код: sql
1.
2.
3.
select
  cast( len(SomeField) as varchar(3) ) +  '<tr><td>' + doccode + replicate(' ', 7  )   
...



а вот так падает:

Код: sql
1.
2.
3.
select
  cast( len(SomeField) as varchar(3) ) +  '<tr><td>' + doccode + replicate(' ', len( SomeField )  )   
...
...
Рейтинг: 0 / 0
12.08.2020, 15:47
    #39989066
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
разница в поведении: SQL Server 2016 vs SQL Server 2019
DBAshnik,

ну, значит обработчик ошибок глючный, не пробрасывает сообщение.
...
Рейтинг: 0 / 0
12.08.2020, 16:33
    #39989079
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
разница в поведении: SQL Server 2016 vs SQL Server 2019
Владислав Колосов
DBAshnik,

ну, значит обработчик ошибок глючный, не пробрасывает сообщение.


Ошибки, приводящие к разрыву соединения, недоступны на клиенте.

Ваще-то тут уже советовали профайлер запустить...
...
Рейтинг: 0 / 0
12.08.2020, 17:02
    #39989091
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
разница в поведении: SQL Server 2016 vs SQL Server 2019
aleks222,

подозреваю, что сам клиент и обрывает. Надо разбираться на более низком уровне - профайлером, сниффером.
...
Рейтинг: 0 / 0
12.08.2020, 17:03
    #39989093
SERG1257
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
разница в поведении: SQL Server 2016 vs SQL Server 2019
DBAshnik как конкретно это сделать из ява-сессии?Это надо запустить из студии
https://docs.microsoft.com/en-us/sql/tools/sql-server-profiler/sql-server-profiler?view=sql-server-ver15
YouTube Video
...
Рейтинг: 0 / 0
12.08.2020, 17:28
    #39989104
DBAshnik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
разница в поведении: SQL Server 2016 vs SQL Server 2019
cпецы! Я короче уже проооосто офигиваю от происходяшего! :-(
Уже столько всего перепробывал... :-(

1. Но пока ясны следущие факты:
replicate() не дружит с len(someField). Равно как и с DATALENGTH(). Хотя судя по доке мелкомякого они обязаны дружить:
https://docs.microsoft.com/de-de/sql/t-sql/functions/replicate-transact-sql?view=sql-server-ver15
Точнее ПЕРЕСТАЛА дружить при переходе c

Microsoft SQL Server 2016 (SP2-CU8) (KB4505830) - 13.0.5426.0 (X64)

на

Microsoft SQL Server 2019 (RTM) - 15.0.2000.5 (X64)


2. при этом не важно включён ли или выключен SET ARITHABORT (хоть ON хоть ОFF)
ошибка всегда одна:
Код: sql
1.
tMSSqlInput_2: java.sql.SQLException:Invalid state, the Connection object is closed.


и всё! :-(


3. подобное происходит даже если я сую всю конструкцию:
replicate(' ', len( SomeField )) во вью и опрашиваю view вместо таблицы! (т.е. ошибка на уровне MsSQL происходит, а не на уровне java/talend)


подскажите _пожалуйста_ что делать новичку в MSSQL!
...
Рейтинг: 0 / 0
12.08.2020, 17:38
    #39989106
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
разница в поведении: SQL Server 2016 vs SQL Server 2019
какой провайдер используете для соединения с сервером SQL?
...
Рейтинг: 0 / 0
12.08.2020, 17:39
    #39989107
Гавриленко Сергей Алексеевич
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
разница в поведении: SQL Server 2016 vs SQL Server 2019
DBAshnik(если же заменить len( SomeField ) на константу, напр. 9 то всё без ошибок отрабатывает и на 2019м тоже!)Это намек на то, что возможно, ваш фреймворк или ваше его использование не дружит со строкам определенной длины. Или со строками, размер которых что-то превышают.

DBAshnikт.е. ошибка на уровне MsSQL происходит, а не на уровне java/talend
То, что у вас в каком-то фреймворке закрывается соединение, не значит, что ошибка происходит на уровне MsSQL. И это никак не доказывает ваша шикарная аргументация, которая не учитывае, что view является по сути сохраненным на стороне сервера текстом запроса, выполнение которого практически ничем не отличается от ситуации, если его прислать в исходном виде.

И в целом, вопросы про то, как заставить фреймворк java дружить с MSSQL, лучше спрашивать в разделе java.
...
Рейтинг: 0 / 0
12.08.2020, 18:14
    #39989121
DBAshnik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
разница в поведении: SQL Server 2016 vs SQL Server 2019
Konst_One
какой провайдер используете для соединения с сервером SQL?


Talend 7.1.
...
Рейтинг: 0 / 0
12.08.2020, 18:44
    #39989128
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
разница в поведении: SQL Server 2016 vs SQL Server 2019
DBAshnik,

согласен с ораторами, что FW может падать с внутренним исключением из-за переполнения типа.

авторeplicate() не дружит с len(someField)
У всех дружит почему-то.
...
Рейтинг: 0 / 0
12.08.2020, 19:05
    #39989129
andreymx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
разница в поведении: SQL Server 2016 vs SQL Server 2019
А какая макс и мин длина поля самфилд? Наллы есть?
...
Рейтинг: 0 / 0
12.08.2020, 19:45
    #39989136
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
разница в поведении: SQL Server 2016 vs SQL Server 2019
DBAshnik
подскажите _пожалуйста_ что делать новичку в MSSQL!
При чём тут MSSQL???
Вам просто нужно отладить свою программу, которая закрывает коннект.

Давно посоветовали посмотреть профайлером, что бы вы убедились.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / разница в поведении: SQL Server 2016 vs SQL Server 2019 / 25 сообщений из 39, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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