logoff | Дата: Среда, 04.12.2013, 20:36 | Сообщение # 1 |
Тамбов
Группа: Администраторы
Сообщений: 655
Репутация: 19
Статус: Offline
| CityBus. Только что выдал. Если в логах вашей программы (transferclient в моем случае) отображается что-то типа показанного ниже - это значит что у вас в программе кончился диапазон для присвоения записям в таблице новых ID - и они достигли максимально допустимого значения для типа int Будет критично для сильно толстых баз данных с большим кол-вом ТС и доооолгим периодом ведения БД с нуля (последнее как раз более критично).
Цитата 04/12/2013 16:25:48.819 (I) Main: Begin session with server 04/12/2013 16:25:48.819 (I) Main: Send login 04/12/2013 16:25:48.819 (I) Main: Send positions request 04/12/2013 16:25:48.819 (I) Main: 203 navigations transfered 04/12/2013 16:25:48.819 (I) Main: All positions received from server 04/12/2013 16:25:49.021 (I) Main: Some data where transfered 04/12/2013 16:25:49.021 (I) Main: Disconnecting from server 04/12/2013 16:25:49.021 (I) Main: Move coord (e) 04/12/2013 16:25:49.021 (I) Main: Starting saving thread 04/12/2013 16:25:49.037 (E) Main: Can't add a record to recordset for coords saving 04/12/2013 16:25:49.037 (E) Main: Err: Arithmetic overflow error converting IDENTITY to data type int. Arithmetic overflow occurred. , NativeErr: State:22003,Native:8115,Origin:[Microsoft][ODBC SQL Server Driver][SQL Server] State:01000,Native:3606,Origin:[Microsoft][ODBC SQL Server Driver][SQL Server]
04/12/2013 16:25:49.037 (I) Main: INSERT INTO SYS_DEV_DirtyData ([device_code],[tele_time],[server_time],[transfer_time],[lat],[long],[speed],[direction],[digit_sens_num],[valid],[analog_data],[flags],[analog_sens_num]) VALUES ('00056253',CONVERT(DATETIME,'2013-12-04 16:35:49',120),CONVERT(DATETIME,'2013-12-04 16:35:35',120),CONVERT(DATETIME,'2013-12-04 20:25:49',120),52.722691000,41.424438000,30,227,0,'1',143.699,5,NULL); 04/12/2013 16:25:49.614 (I) Sav1: 0 coords saved to DB
Лечим вот так
Кодuse bn_patp
DBCC CHECKIDENT ('sys_dev_dirtydata', reseed, -2147483646)
что выдаст вам сообщение
Цитата Checking identity information: current identity value '2147483647', current column value '-2147483646'. DBCC execution completed. If DBCC printed error messages, contact your system administrator.
где sys_dev_dirtydata - название таблицы, на которую ругается insert (выделено цветом) а bn_patp - название базы данных.
Из опыта, такое же может быть и для таблицы sys_dev_archivedata Привет CyberFleet-ту так же... В моем случае это означает, что через таблицу "пролетело" порядка 2 миллиардов с лишним координат через "грязные данные" (sys_dev_dirtydata)... ну или в истории перемещения
PS: В жизни рааааз бываааает ваааасемнааадцать леееет
|
|
| |
logoff | Дата: Пятница, 27.11.2015, 12:40 | Сообщение # 2 |
Тамбов
Группа: Администраторы
Сообщений: 655
Репутация: 19
Статус: Offline
| решение для cyberFleet
Цитата27/11/2015 09:32:54.850 (I) Main: Starting saving thread 27/11/2015 09:32:54.864 (E) Main: Can't insert new coord 27/11/2015 09:32:54.864 (E) Main: Err: Ошибка арифметического переполнения при преобразовании IDENTITY к типу данных int. Произошло арифметическое переполнение. , NativeErr: State:22003,Native:8115,Origin:[Microsoft][ODBC SQL Server Driver][SQL Server] State:01000,Native:3606,Origin:[Microsoft][ODBC SQL Server Driver][SQL Server] 27/11/2015 09:32:54.864 (I) Main: INSERT INTO SYS_DEV_DirtyData ([device_code],[tele_time],[server_time],[transfer_time],[lat],[long],[speed],[direction],[digit_sens_num],[valid],[analog_data],[flags],[analog_sens_num]) VALUES ('59925928',CONVERT(DATETIME,'2015-11-24 12:37:32',120),CONVERT(DATETIME,'2015-11-24 12:37:43',120),CONVERT(DATETIME,'2015-11-27 12:32:54',120),51.954807000,41.738826000,0,329,0,'1',0.000000,4,4);
use bn DBCC CHECKIDENT ('sys_dev_dirtydata', reseed, 1)
|
|
| |