Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 1С и Microsoft SQL Server. Попытка вставки неуникального значения в уникальный индекс  [new]
brr_art
Member

Откуда:
Сообщений: 2
Сразу скажу. Я в Microsoft SQL Server практически не разбираюсь. Так, на уровне юзера ушастого - базу создать, шринкнуть её, память подкрутить и остальные простейшие операции.

Поэтому прошу помощи у вашего сообщества. Очень прошу.

В один прекрасный день сломался у меня обмен с периферийной базой.
1С выдала вот такую ошибку:
Ошибка при чтении изменений при обмене РИБ: Ошибка при вызове метода контекста (ПрочитатьИзменения): Попытка вставки неуникального значения в уникальный индекс:
Microsoft SQL Server Native Client 10.0: Невозможно вставить повторяющуюся ключевую строку в объект "dbo.#tt42" с уникальным индексом "idx42".
HRESULT=80040E2F, SQLSrvr: SQLSTATE=23000, state=1, Severity=E, native=2601, line=1

Вопрос - что за объект "dbo.#tt42" ? Это временная таблица базы tempdb? Смотрел их - вроде нету.
Где бы мне поискать это загадочный объект "dbo.#tt42" и как бы его посмотреть?
24 янв 18, 03:19    [21132541]     Ответить | Цитировать Сообщить модератору
 Re: 1С и Microsoft SQL Server. Попытка вставки неуникального значения в уникальный индекс  [new]
правильный проходящий.
Guest
brr_art
Вопрос - что за объект "dbo.#tt42" ?
Это знает только сервер 1с и только на время использования это1 таблицы.
Это временная таблица базы tempdb?
Разумеется. Ключевое слов ВРЕМЕННАЯ.
Смотрел их - вроде нету.
Опять разумеется. Во-первых, см. в предыдущем абзаце указание на ключевое слов, во-вторых, нельзя смотреть чужие данные.
Где бы мне поискать это загадочный объект "dbo.#tt42" и как бы его посмотреть?
Никак. Ибо это, как уже указано, временный объект, имя и время жизни которого зависит от данных, которые обрабатывает 1с.
Разбираться надо с планом обмена. Посмотреть, что в нем зарегистрировано для обмена и в этом зарегистрированным искать косяк в данных.
24 янв 18, 07:15    [21132602]     Ответить | Цитировать Сообщить модератору
 Re: 1С и Microsoft SQL Server. Попытка вставки неуникального значения в уникальный индекс  [new]
brr_art
Member

Откуда:
Сообщений: 2
Те же мысли посещали про данные в плане обмена. Что-же делать, будем ковырять ... Значит проблема не на стороне SQL и это хорошо. Спасибо за ответ!
24 янв 18, 07:49    [21132629]     Ответить | Цитировать Сообщить модератору
 Re: 1С и Microsoft SQL Server. Попытка вставки неуникального значения в уникальный индекс  [new]
nvv
Member

Откуда:
Сообщений: 54
Чего сюда полез, а не на партнёрский форум или инфостарт?
Это ошибка платформы при работе с native при разрыве соединения. Ошибка очень старая. Вроде получилось вылечить в свежих версиях.
Перезагрузи службу 1с и не удаляй вручную сеансы пользователей. Даже kill может вызвать ошибку. Обновляйся мин до 8.3.10
25 янв 18, 08:32    [21136659]     Ответить | Цитировать Сообщить модератору
 Re: 1С и Microsoft SQL Server. Попытка вставки неуникального значения в уникальный индекс  [new]
aux3
Member

Откуда:
Сообщений: 316
nvv, Живём с базой размером в терабайт, лечится перезапуском сервера приложений 1С.
25 янв 18, 17:58    [21139462]     Ответить | Цитировать Сообщить модератору
 Re: 1С и Microsoft SQL Server. Попытка вставки неуникального значения в уникальный индекс  [new]
Cammomile
Member

Откуда:
Сообщений: 1214
"Вопрос - что за объект "dbo.#tt42" ? Это временная таблица базы tempdb? Смотрел их - вроде нету.
Где бы мне поискать это загадочный объект "dbo.#tt42" и как бы его посмотрет"

Временная таблица существует только в контексте соединения. Если ваша платформа разорвала соединение, таблица уничтожается.

Также есть предположение, что Один Эсс автогенерит эти названия, сейчас у вас #tt42 , а потом #tt1488

Но пока таблица жива, и если у вас есть сисадминские привилегии, при помощи танцев с бубном вы, таки, можете посмотреть содержимое таблицы.
Сначала смотрим где она физически расположена
SELECT  T.name,
        T.[object_id],
        AU.type_desc,
        AU.first_page,
        AU.data_pages,
        P.[rows]
FROM    tempdb.sys.tables T
JOIN    tempdb.sys.partitions P
        ON  P.[object_id] = T.[object_id]
JOIN    tempdb.sys.system_internals_allocation_units AU
        ON  (AU.type_desc = N'IN_ROW_DATA' AND AU.container_id = P.partition_id)
        OR  (AU.type_desc = N'ROW_OVERFLOW_DATA' AND AU.container_id = P.partition_id)
        OR  (AU.type_desc = N'LOB_DATA' AND AU.container_id = P.hobt_id)
WHERE   T.name LIKE N'#НазваниеТвоейТаблицы%';


А затем при помощи
DBCC TRACEON (3604);
DBCC PAGE (...) WITH TABLERESULTS;


По-хардкору извлекаем данные. Но это точно не то, чем стоит заниматься... За такое, говорят, черти двойную порцию дров под котел кладут.
25 янв 18, 18:23    [21139522]     Ответить | Цитировать Сообщить модератору
 Re: 1С и Microsoft SQL Server. Попытка вставки неуникального значения в уникальный индекс  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
Cammomile,

пока он будет переводить first_page в страницу и тд, таблица грохнется сессией )
25 янв 18, 18:28    [21139530]     Ответить | Цитировать Сообщить модератору
 Re: 1С и Microsoft SQL Server. Попытка вставки неуникального значения в уникальный индекс  [new]
Cammomile
Member

Откуда:
Сообщений: 1214
Ну чисто технически он может поставить брейкпоинт на своей выгрузке после 1й записи и полезть смотреть че там как.
25 янв 18, 18:40    [21139571]     Ответить | Цитировать Сообщить модератору
 Re: 1С и Microsoft SQL Server. Попытка вставки неуникального значения в уникальный индекс  [new]
nvv
Member

Откуда:
Сообщений: 54
Зачем какие-то размышления, если разработчики платформы 1с разжевали ошибку и разъяснили из-за чего она долгие годы морочила мозг? Почитайте при желании на партнерке. И обновите ПО для ее устранения.
26 янв 18, 00:05    [21140076]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить