Гость
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / ODBC-драйвер валит MSSQL2k8r2 / 22 сообщений из 22, страница 1 из 1
25.05.2015, 11:04
    #38967611
spock
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ODBC-драйвер валит MSSQL2k8r2
Коллеги, здравствуйте!
Нужна помощь в прояснении ситуации.
В нашей организации есть 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>;'

Почему такое происходит и что сделать, чтобы такое больше не происходило?
...
Рейтинг: 0 / 0
25.05.2015, 11:14
    #38967623
DAiMor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ODBC-драйвер валит MSSQL2k8r2
spock,

А sql запрос на котором валится, точно рандомный тоже, или все таки всегда один.
конечно тут лучше все таки обратиться в поддержку InterSystemsю
...
Рейтинг: 0 / 0
25.05.2015, 11:27
    #38967635
spock
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ODBC-драйвер валит MSSQL2k8r2
DAiMor,

запрос не рандомный, но написан как dynamic sql (сконструирован, короче). В нем ничего такого, просто выборка из класса/таблицы, помещение во временную таблицу (и перекладывание в основную - служба валится даже без этой части запроса).
Запрос может несколько раз отработать, а потом без видимых причин валится служба скуля. До сегодня списывалось на фазу луны, потому что делалось в dev-окружении, но готовится переезд на prod и не хочется там завалить службу.
...
Рейтинг: 0 / 0
25.05.2015, 11:33
    #38967651
DAiMor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ODBC-драйвер валит MSSQL2k8r2
spock,

Я имею ввиду, что падает на одном и том же запросе ?
вы писали про рандомность, я и пытаюсь понять на каких/каком запросе такое происходит
...
Рейтинг: 0 / 0
25.05.2015, 11:46
    #38967674
Timur Safin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ODBC-драйвер валит MSSQL2k8r2
spock,

Я бы все-таки советовал собрать odbc.log, и обратиться в поддержку (WRC).
...
Рейтинг: 0 / 0
25.05.2015, 11:49
    #38967682
spock
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ODBC-драйвер валит MSSQL2k8r2
DAiMor,

Служба скуля падает рандомно. Т.е. скрипт можно несколько раз запустить, а на какой-то рандомный раз завалится служба. Так же замечено, что если этот скрипт запускать в нескольких окнах, но для разных cache-баз, то через некоторое время это тоже приведет к аварийному завершению службы, но случится это раньше.

У нас развернуто 30+ виртуальных машин, на каждой по инстансу cache с базой. Из каждой такой виртуалки нужно забрать к себе в одну mssql базу - классическая задача.

Например, была ситуация, когда я этот скрипт запускал последовательно для каждого из cache-серверов из списка (dynamic sql как раз нужен для того, чтобы подставить имя линкованного cache-сервера) и где-то на 15-20 раз падала служба скуля. А в другой раз я открыл пять окон и параллельно запустил один и тот же скрипт (но для разных cache-баз) и тоже заваливалась служба, но в этот раз долго не пришлось ждать.
...
Рейтинг: 0 / 0
25.05.2015, 11:49
    #38967683
servit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ODBC-драйвер валит MSSQL2k8r2
DAiMorконечно тут лучше все таки обратиться в поддержку InterSystemsюИ это тоже, а пока...spockи что сделать, чтобы такое больше не происходило?Попробуйте использовать драйвер совместимый с ODBC 3.5 вместо ODBC 2.5 и явно указывайте все параметры, например:

Код: plaintext
DRIVER={InterSystems ODBC35};SERVER=<servername>;PORT=<port>;DATABASE=<dbname>;UID=<username>;PWD=<password>;Unicode SQLTypes=1;...

Также включите лог odbc (его у Вас обязательно попросят в WRC).
...
Рейтинг: 0 / 0
26.05.2015, 16:00
    #38968904
VadimF
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ODBC-драйвер валит MSSQL2k8r2
В SQL Gateway можно использовать JDBC .
Попробуйте использовать JDBC.
...
Рейтинг: 0 / 0
26.05.2015, 16:11
    #38968925
servit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ODBC-драйвер валит MSSQL2k8r2
VadimF ,

У ТС MSSQL (ведущий) подключается к Caché (ведомый), а не Caché к MSSQL.
...
Рейтинг: 0 / 0
27.05.2015, 12:31
    #38969652
VadimF
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ODBC-драйвер валит MSSQL2k8r2
servit,

Согласен, но Caché тоже поддерживает JDBC.
Можно попробовать.

Вадим
...
Рейтинг: 0 / 0
27.05.2015, 13:06
    #38969708
servit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ODBC-драйвер валит MSSQL2k8r2
VadimFСогласен, но Caché тоже поддерживает JDBC.Вопрос не в том, поддерживает ли Caché JDBC, а в том, поддерживает ли mssql2k8r2 линковочные сервера, используя JDBC или нет:VadimFМожно попробовать.Тогда нужно пробовать ODBC-JDBC Bridge. Но я бы всё же разобрался с ODBC.

PS: судя по тому, что ТС уже не выходит на связь, можно сделать вывод, что вопрос разрешился.
...
Рейтинг: 0 / 0
27.05.2015, 13:08
    #38969710
spock
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ODBC-драйвер валит MSSQL2k8r2
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.
SELECT *
FROM OPENQUERY(<ЗдесьИмяЛинка>, '
	SELECT DISTINCT
		CAST(Addresses.ID as varchar) as ID,
		Addresses.City->Name as City,
		Addresses.Street->Name as Street,
		Addresses.House->Num as House,
		Addresses.Flat->Num as Flat,
		Addresses.Street->CodeG as KladrCode
	FROM Address.EAddress as Addresses
	INNER JOIN Contracts.EPhDogovor as Dogovors ON Dogovors.Address = Addresses.ID
	WHERE
		Dogovors.Abonent->ID IS NOT NULL'
) as Res


При повторных перезапусках скрипта пока не повторяется...
...
Рейтинг: 0 / 0
27.05.2015, 13:15
    #38969723
spock
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ODBC-драйвер валит MSSQL2k8r2
Теперь у меня две проблемы: падение службы и исключение, выбрасываемое, судя по всему, oledb-провайдером о_О
...
Рейтинг: 0 / 0
27.05.2015, 13:28
    #38969742
servit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ODBC-драйвер валит MSSQL2k8r2
spockскорректировал параметры линкования в соответствии с Вашей рекомендацией.Судя по Вашей версии Caché, она у вас не юникодная, поэтому Unicode SQLTypes=1; нужно убрать или установить в 0 (уточняю на всякий случай).
spockна пятый получил ошибку:Какой тип у свойства Addresses.House->Num? (код возьмите из студии, пожалуйста).
Бо́льшие строки могли ввести или напрямую в обход объектов/SQL или ещё до корректировки длины поля. Нужно отдельно выявлять такие данные, а пока их можно "вручную" обрезать до нужной длины: Converting Data Types .
...
Рейтинг: 0 / 0
27.05.2015, 13:44
    #38969760
spock
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ODBC-драйвер валит MSSQL2k8r2
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

Ну не может быть, что происходящее является моими индивидуальными граблями.
...
Рейтинг: 0 / 0
27.05.2015, 14:16
    #38969800
servit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ODBC-драйвер валит MSSQL2k8r2
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-сервера.Думаю, закрытие зависших процессов в Портале тоже должно решить проблему.
...
Рейтинг: 0 / 0
27.05.2015, 14:27
    #38969809
spock
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ODBC-драйвер валит MSSQL2k8r2
servitТогда должно ожидаться 50, а не 100. Нет?
Похоже взведенный ключ Unicode=1 привел к такому удвоению.

servitА если взять поновее?
Так можно? В этом разделе форума видел обсуждение про odbc-драйвер, советовали использовать версию соответствующую версии cache

servitПоиграйтесь с ODBC query timeout
Думаю, закрытие зависших процессов в Портале тоже должно решить проблему.
Проблема зависания повторябельна для всех +30 виртуальных cache. Там по своему порталу ведь. Дело точно в mssql. У него снесло крышу после того исключения, почему-то.
...
Рейтинг: 0 / 0
27.05.2015, 14:55
    #38969841
servit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ODBC-драйвер валит MSSQL2k8r2
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 .
...
Рейтинг: 0 / 0
27.05.2015, 15:07
    #38969856
spock
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ODBC-драйвер валит MSSQL2k8r2
servitНе заметил Unicode=1 в
Сделал в соответствие с рекомендацией:

servitПопробуйте использовать драйвер совместимый с ODBC 3.5 вместо ODBC 2.5 и явно указывайте все параметры, например:

Код: plaintext
DRIVER={InterSystems ODBC35};SERVER=<servername>;PORT=<port>;DATABASE=<dbname>;UID=<username>;PWD=<password>;Unicode SQLTypes=1;...
...
Рейтинг: 0 / 0
27.05.2015, 15:14
    #38969862
servit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ODBC-драйвер валит MSSQL2k8r2
spockСделал в соответствие с рекомендацией:А я было подумал, что это Вы добавили что-то уникальное для OLEDB. Тогда понятно. Уточнение я уже приводил: 17695851
...
Рейтинг: 0 / 0
27.05.2015, 15:41
    #38969904
spock
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ODBC-драйвер валит MSSQL2k8r2
Обновил версию драйвера на эту: cache.2015.1.0.ODBCDriver_x64.exe
Запустил на оставшихся +25 базах - все ок, sql-сервер не падал, исключений не выбрасывал, но я кастанул выбираемые поля к нужной длине, т.е. сделал так: CAST(Addresses.House->Num as varchar(50)) as House
...
Рейтинг: 0 / 0
27.05.2015, 15:45
    #38969911
servit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ODBC-драйвер валит MSSQL2k8r2
spockОбновил версию драйвера на эту: cache.2015.1.0.ODBCDriver_x64.exeЕсть ведь ещё новее.spockно я кастанул выбираемые поля к нужной длине, т.е. сделал такТогда версию можно было и не менять.
...
Рейтинг: 0 / 0
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / ODBC-драйвер валит MSSQL2k8r2 / 22 сообщений из 22, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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