|
ODBC-драйвер валит MSSQL2k8r2
|
|||
---|---|---|---|
#18+
Коллеги, здравствуйте! Нужна помощь в прояснении ситуации. В нашей организации есть read-only базы cache дружественной нам организации. Для выполнения определенного анализа данных настроен импорт данных из баз в нашу, развернутую на mssql2k8r2. Импорт выполняется с помощью t-sql скриптов, выполняемых через слинкованные сервера к cache. Замечено, что после запуска наших скриптов в рандомном порядке валится служба mssql. Конфигурация: - mssql 2008r2 x64 10.50.2500.0; - odbc-драйвер cache.2014.1.3.ODBCDriver_x64; - Cache for Windows (x86-64) 2014.1.3 (Build 775); Строка соединения линкованного сервера: @provstr=N'DRIVER={InterSystems ODBC};SERVER=<servername>;DATABASE=<dbname>;' Почему такое происходит и что сделать, чтобы такое больше не происходило? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2015, 11:04 |
|
ODBC-драйвер валит MSSQL2k8r2
|
|||
---|---|---|---|
#18+
spock, А sql запрос на котором валится, точно рандомный тоже, или все таки всегда один. конечно тут лучше все таки обратиться в поддержку InterSystemsю ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2015, 11:14 |
|
ODBC-драйвер валит MSSQL2k8r2
|
|||
---|---|---|---|
#18+
DAiMor, запрос не рандомный, но написан как dynamic sql (сконструирован, короче). В нем ничего такого, просто выборка из класса/таблицы, помещение во временную таблицу (и перекладывание в основную - служба валится даже без этой части запроса). Запрос может несколько раз отработать, а потом без видимых причин валится служба скуля. До сегодня списывалось на фазу луны, потому что делалось в dev-окружении, но готовится переезд на prod и не хочется там завалить службу. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2015, 11:27 |
|
ODBC-драйвер валит MSSQL2k8r2
|
|||
---|---|---|---|
#18+
spock, Я имею ввиду, что падает на одном и том же запросе ? вы писали про рандомность, я и пытаюсь понять на каких/каком запросе такое происходит ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2015, 11:33 |
|
ODBC-драйвер валит MSSQL2k8r2
|
|||
---|---|---|---|
#18+
spock, Я бы все-таки советовал собрать odbc.log, и обратиться в поддержку (WRC). ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2015, 11:46 |
|
ODBC-драйвер валит MSSQL2k8r2
|
|||
---|---|---|---|
#18+
DAiMor, Служба скуля падает рандомно. Т.е. скрипт можно несколько раз запустить, а на какой-то рандомный раз завалится служба. Так же замечено, что если этот скрипт запускать в нескольких окнах, но для разных cache-баз, то через некоторое время это тоже приведет к аварийному завершению службы, но случится это раньше. У нас развернуто 30+ виртуальных машин, на каждой по инстансу cache с базой. Из каждой такой виртуалки нужно забрать к себе в одну mssql базу - классическая задача. Например, была ситуация, когда я этот скрипт запускал последовательно для каждого из cache-серверов из списка (dynamic sql как раз нужен для того, чтобы подставить имя линкованного cache-сервера) и где-то на 15-20 раз падала служба скуля. А в другой раз я открыл пять окон и параллельно запустил один и тот же скрипт (но для разных cache-баз) и тоже заваливалась служба, но в этот раз долго не пришлось ждать. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2015, 11:49 |
|
ODBC-драйвер валит MSSQL2k8r2
|
|||
---|---|---|---|
#18+
DAiMorконечно тут лучше все таки обратиться в поддержку InterSystemsюИ это тоже, а пока...spockи что сделать, чтобы такое больше не происходило?Попробуйте использовать драйвер совместимый с ODBC 3.5 вместо ODBC 2.5 и явно указывайте все параметры, например: Код: plaintext
Также включите лог odbc (его у Вас обязательно попросят в WRC). ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2015, 11:49 |
|
ODBC-драйвер валит MSSQL2k8r2
|
|||
---|---|---|---|
#18+
В SQL Gateway можно использовать JDBC . Попробуйте использовать JDBC. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2015, 16:00 |
|
ODBC-драйвер валит MSSQL2k8r2
|
|||
---|---|---|---|
#18+
VadimF , У ТС MSSQL (ведущий) подключается к Caché (ведомый), а не Caché к MSSQL. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2015, 16:11 |
|
ODBC-драйвер валит MSSQL2k8r2
|
|||
---|---|---|---|
#18+
servit, Согласен, но Caché тоже поддерживает JDBC. Можно попробовать. Вадим ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2015, 12:31 |
|
ODBC-драйвер валит MSSQL2k8r2
|
|||
---|---|---|---|
#18+
VadimFСогласен, но Caché тоже поддерживает JDBC.Вопрос не в том, поддерживает ли Caché JDBC, а в том, поддерживает ли mssql2k8r2 линковочные сервера, используя JDBC или нет:
PS: судя по тому, что ТС уже не выходит на связь, можно сделать вывод, что вопрос разрешился. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2015, 13:06 |
|
ODBC-драйвер валит MSSQL2k8r2
|
|||
---|---|---|---|
#18+
servit, скорректировал параметры линкования в соответствии с Вашей рекомендацией. Обновил sql 2008r2 до sp3. Запустил свой скрипт 4 удачных раза (проходил руками по списку баз), на пятый получил ошибку: Сообщение 7347, уровень 16, состояние 1, строка 1 Поставщик OLE DB "MSDASQL" для связанного сервера <ЗдесьИмяЛинка> вернул для столбца "[MSDASQL].House" данные, по размеру не соответствующие ожидаемым данным. Максимально ожидаемая длина данных 100, тогда как длина возвращенных данных 102. После чего служба sql-сервера упала. Запрос был такой (упростил): Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
При повторных перезапусках скрипта пока не повторяется... ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2015, 13:08 |
|
ODBC-драйвер валит MSSQL2k8r2
|
|||
---|---|---|---|
#18+
Теперь у меня две проблемы: падение службы и исключение, выбрасываемое, судя по всему, oledb-провайдером о_О ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2015, 13:15 |
|
ODBC-драйвер валит MSSQL2k8r2
|
|||
---|---|---|---|
#18+
spockскорректировал параметры линкования в соответствии с Вашей рекомендацией.Судя по Вашей версии Caché, она у вас не юникодная, поэтому Unicode SQLTypes=1; нужно убрать или установить в 0 (уточняю на всякий случай). spockна пятый получил ошибку:Какой тип у свойства Addresses.House->Num? (код возьмите из студии, пожалуйста). Бо́льшие строки могли ввести или напрямую в обход объектов/SQL или ещё до корректировки длины поля. Нужно отдельно выявлять такие данные, а пока их можно "вручную" обрезать до нужной длины: Converting Data Types . ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2015, 13:28 |
|
ODBC-драйвер валит MSSQL2k8r2
|
|||
---|---|---|---|
#18+
Property House As Address.EHouse; который в свою очередь: Property Num As %String; где %String: /// The maximum number of characters the string can contain. Parameter MAXLEN As INTEGER = 50; Сейчас повторилась ситуация, когда любые запросы к cache через линковку, зависают на неопределенное время. У меня такое уже было некоторое время назад. Помогал только рестарт службы sql-сервера. Может быть я взял кривую версию odbc-драйвера? Качал с сайта интерсистемс: cache.2014.1.3.ODBCDriver_x64.exe , версия файла 16.0.0.400, версия продукта 1.00.0000 от 13.01.15 16:13 Ну не может быть, что происходящее является моими индивидуальными граблями. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2015, 13:44 |
|
ODBC-драйвер валит MSSQL2k8r2
|
|||
---|---|---|---|
#18+
spockТеперь у меня две проблемы: падение службы и исключение, выбрасываемое, судя по всему, oledb-провайдеромВы правы, это ошибка не со стороны Caché. Эти две проблемы связаны: похоже одно приводит к другому. Это уже вопрос к MSDN/Microsoft. spockProperty Num As %String;Тогда должно ожидаться 50, а не 100. Нет? spockМожет быть я взял кривую версию odbc-драйвера? Качал с сайта интерсистемс: cache.2014.1.3.ODBCDriver_x64.exeА если взять поновее? spockСейчас повторилась ситуация, когда любые запросы к cache через линковку, зависают на неопределенное время.Поиграйтесь с ODBC query timeout : 12477966 spockПомогал только рестарт службы sql-сервера.Думаю, закрытие зависших процессов в Портале тоже должно решить проблему. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2015, 14:16 |
|
ODBC-драйвер валит MSSQL2k8r2
|
|||
---|---|---|---|
#18+
servitТогда должно ожидаться 50, а не 100. Нет? Похоже взведенный ключ Unicode=1 привел к такому удвоению. servitА если взять поновее? Так можно? В этом разделе форума видел обсуждение про odbc-драйвер, советовали использовать версию соответствующую версии cache servitПоиграйтесь с ODBC query timeout Думаю, закрытие зависших процессов в Портале тоже должно решить проблему. Проблема зависания повторябельна для всех +30 виртуальных cache. Там по своему порталу ведь. Дело точно в mssql. У него снесло крышу после того исключения, почему-то. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2015, 14:27 |
|
ODBC-драйвер валит MSSQL2k8r2
|
|||
---|---|---|---|
#18+
spockПохоже взведенный ключ Unicode=1 привел к такому удвоению.Не заметил Unicode=1 в spockСтрока соединения линкованного сервера: @provstr=N'DRIVER={InterSystems ODBC};SERVER=<servername>;DATABASE=<dbname>;'Если у Вас MSSQL - юникодная, а Caché - 8-битная, то в строке подключения нужно всё же ориентироваться на битность Caché. spockТак можно?Можно:Caché Recent Upgrade Checklists . Но проще, конечно, не обновляться. spockДело точно в mssql. У него снесло крышу после того исключения, почему-то.Странно, ведь указанная ошибка не критичная, если только она не единственная. PS: ещё посмотрите в Портале xDBC Error Log . ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2015, 14:55 |
|
ODBC-драйвер валит MSSQL2k8r2
|
|||
---|---|---|---|
#18+
servitНе заметил Unicode=1 в Сделал в соответствие с рекомендацией: servitПопробуйте использовать драйвер совместимый с ODBC 3.5 вместо ODBC 2.5 и явно указывайте все параметры, например: Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2015, 15:07 |
|
ODBC-драйвер валит MSSQL2k8r2
|
|||
---|---|---|---|
#18+
spockСделал в соответствие с рекомендацией:А я было подумал, что это Вы добавили что-то уникальное для OLEDB. Тогда понятно. Уточнение я уже приводил: 17695851 ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2015, 15:14 |
|
ODBC-драйвер валит MSSQL2k8r2
|
|||
---|---|---|---|
#18+
Обновил версию драйвера на эту: cache.2015.1.0.ODBCDriver_x64.exe Запустил на оставшихся +25 базах - все ок, sql-сервер не падал, исключений не выбрасывал, но я кастанул выбираемые поля к нужной длине, т.е. сделал так: CAST(Addresses.House->Num as varchar(50)) as House ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2015, 15:41 |
|
|
start [/forum/topic.php?fid=39&tid=1556654]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
58ms |
get topic data: |
13ms |
get forum data: |
2ms |
get page messages: |
62ms |
get tp. blocked users: |
2ms |
others: | 279ms |
total: | 449ms |
0 / 0 |