![]() |
![]() |
|
Сложный вопрос по таблице BinaryData. | ☑ | ||
---|---|---|---|---|
0
Sevish
04.08.25
✎
10:32
|
Добрый день всем!
Посмотрел какие таблицы файла SQL сколько весят и обнаружил, что таблица "BinaryData" выросла за два месяца на 15Гб. Как посмотреть, чем именно она приросла? Насколько я понимаю, туда пишутся значения реквизитов типа "ХранилищеЗначения", а как понять какой именно? У меня все файлы хранятся во внешних томах и это не менялось. Просто SELECT из этой таблицы дает какой-то "f-key" вида "0x9562A0AB5240DE4FA4F2033E4DB9F09D". А в какой таблице искать этот ключ, чтобы понять к какому реквизиту, какого объекта метаданных он относится? Спасибо за помощь. |
|||
1
arsik
гуру
04.08.25
✎
13:32
|
Поищи базопузомер. Я думаю он тебе скажет, к чему относятся бинарные данные.
PS: Что-то я не верю, что у тебя таблица с таким именем есть в скуле. Все таблицы https://its.1c.ru/db/metod8dev/content/1798/hdoc |
|||
2
Sevish
04.08.25
✎
11:45
|
Есть:
SELECT TOP (1000) [f_key] ,[f_off] ,[f_num] ,[f_data] FROM [MYIB].[dbo].[BinaryData] |
|||
3
Sevish
04.08.25
✎
11:22
|
(1) именно скачал обработку, которая и показала, что там 17Гб.
|
|||
4
Garykom
гуру
04.08.25
✎
11:56
|
(1) про 1С77 не забыл?
|
|||
5
PR
04.08.25
✎
12:09
|
ПолучитьСтруктуруХраненияБазыДанных
ПолучитьРазмерДанныхБазыДанных |
|||
6
Sevish
04.08.25
✎
12:18
|
(5) это все сделано, меня интересует что именно внутри таблицы "BinaryData". Это просто какая-то таблица SQL, у неё нет сопоставления с объектом метаданных.
|
|||
7
PR
04.08.25
✎
12:21
|
(6) Плясать нужно от 1С, а не от SQL
Или ты хочешь сказать, что по данным 1С этого прироста нигде нет? |
|||
8
PR
04.08.25
✎
12:23
|
А, так это же вроде строки неограниченной длины что ли, они же вроде в отдельной таблице SQL хранятся
|
|||
9
arsik
гуру
04.08.25
✎
12:30
|
(4) Что то я ничего не понимаю. Ну нет в 8ке + SQL такой таблицы. Если и есть, то это их собственные костыли.
И при чем тут 77? |
|||
10
maxab72
04.08.25
✎
12:32
|
чего гадать? удалить таблицу и посмотреть что сломается...
|
|||
11
PR
04.08.25
✎
12:33
|
(9) Есть
|
|||
12
arsik
гуру
04.08.25
✎
12:39
|
(11) Покажи - https://its.1c.ru/db/metod8dev/content/1798/hdoc
|
|||
13
maxab72
04.08.25
✎
12:47
|
а эта таблица BinaryData не может быть от какого-либо расширения, вроде 1с++ или чего подобного?
|
|||
14
PR
04.08.25
✎
13:01
|
(12) Открой список скулевых таблиц и посмотри
|
|||
15
PR
04.08.25
✎
13:01
|
(13) Нет
|
|||
16
maxab72
04.08.25
✎
13:33
|
(14) в списке таблиц 1с-ных баз не вижу такого, те имена таблиц, что начинаются с буквы, а не "_" начинаются с Config. Или это в другом месте смотреть надо?
|
|||
17
d4rkmesa
04.08.25
✎
13:20
|
(0) Надо поискать по табличкам данные с ключом 0x9562A0AB5240DE4FA4F2033E4DB9F09D , который в данной таблице является внешним. Скорее всего, какие-то blob-ы, хранилища значений или строки неогр. длины.
|
|||
18
Ёпрст
гуру
04.08.25
✎
13:31
|
(0) Неправильно понимаешь. Это не табличка от 1с-базы.
Переименуй её и смотри, чего сломается. Узнаешь кто что и зачем туда пишет. |
|||
19
arsik
гуру
04.08.25
✎
14:00
|
(14) У меня такой нет. Да и не может такой быть, в (12) четко указанно какие таблицы могут быть. Это не от 1С таблица, это какая то примочка-самоделка.
ЗЫ: Ты же вроде все время топил, за лицензионную чистоту, а сейчас пытаешься нам тут продать, что это стандартная таблица. |
|||
20
Garykom
гуру
04.08.25
✎
14:04
|
Возможно путает табличку с одноименными колонками других таблицХранилища поименованных двоичных данных (файлов) 1С:Предприятие создает в базе данных несколько таблиц, которые содержат конфигурацию, профайлы и некоторые другие данные в виде набора поименованных двоичных данных (файлов). К ним относятся таблицы: Config (конфигурация базы данных), ConfigSave (сохраненная конфигурация), ConfigCAS (системное хранилище конфигураций расширений), ConfigCASSave (сохраненное системное хранилище конфигураций расширений), DepotFiles (работа с хранилищем конфигурации), Files (работа с хранилищем конфигурации на платформе версии 8.3.9 и ниже, профайлы и т.п.), Params (служебные параметры информационной базы). Все они имеют одинаковый набор полей: FileName - имя файла; Creation - момент времени создания файла; Modified - момент времени последней модификации файла; Attributes - атрибуты файла; DataSize - длина файла в байтах; BinaryData - данные, хранимые в файле. |
|||
21
Garykom
гуру
04.08.25
✎
14:05
|
(20)+ Теоретически хз что пилят в платформе, возможно это некий кэш/индекс для данных конфигурации если типовое
Либо совершенно нетиповое |
|||
22
arsik
гуру
04.08.25
✎
14:12
|
(21) Видимо так, судя по Ошибка хранилища двоичных данных - 'Ошибка блочного хранения двоичных данных' 8.3.27.1644
ЗЫ: но судя по https://wonderland.v8.1c.ru/blog/khranilishche-dvoichnykh-dannykh/ они вообще в другой базе должны храниться. |
|||
23
Garykom
гуру
04.08.25
✎
14:10
|
Имхо сделать копию базы средствами sql
Снести эту табличку и глянуть что будет Еще логи настроить и посмотреть что/когда в нее пишет, сравнить с техжурналом |
|||
24
Garykom
гуру
04.08.25
✎
14:31
|
(22) да похоже оно
а часть - в специальном каталоге кластера серверов 1С:Предприятие
вот эта табличка это походу индекс этого "специального каталога" возможно с полнотекстовым поиском даже |
|||
25
Ёпрст
гуру
04.08.25
✎
14:45
|
(23) Зачем её сносить ? Достаточно просто переименовать
|
|||
26
PR
04.08.25
✎
17:15
|
(16) Открываю список таблиц, вижу везде dbo.BinaryData
Что мне еще сделать, видео тебе прислать? |
|||
27
PR
04.08.25
✎
17:17
|
(19) Еще раз, для тех, кто понимает только с пятого раза
Открыл несколько баз, поискал, везде нашел эту табличку |
|||
28
PR
04.08.25
✎
17:26
|
Вот вы ленивые
Создал пустую базу, таблица есть Удалил таблицу Запустил 1С, все работает Добавил справочник с реквизитом строка неограниченной длины и реквизитом хранилище данных Запустил 1С, все работает Табличка при реструктуризации не появляется Копайте дальше |
|||
29
PR
04.08.25
✎
17:44
|
Вот что говорит наш китайский товарищ https://chat.qwen.ai
ПодробностиТаблица `dbo.binarydata` в базе данных 1С (в формате SQL Server) — это системная таблица, которая используется платформой 1С:Предприятие для **хранения двоичных данных**, таких как: - Прикреплённые файлы (например, сканы документов, изображения, PDF и т.п.) - Вложения к объектам конфигурации (документам, справочникам, регистрам и др.) - Двоичные данные, сохраняемые через механизм "Приложения" или "Внешние обработки" - Иногда — временные данные, кэши, миниатюры и т.п. --- ### 🔹 Основные характеристики таблицы `binarydata`: | Колонка | Тип данных | Описание | |--------|------------|--------| | `objid` | `uniqueidentifier` | Уникальный идентификатор объекта, к которому привязано двоичное содержимое | | `part` | `int` | Номер части данных (если файл разбит на части — используется при больших объёмах) | | `data` | `varbinary(max)` | Само двоичное содержимое (например, содержимое файла) | --- ### 🔹 Как работает хранение: - Если файл небольшой — он хранится целиком в одной строке. - Если файл большой — он **разбивается на части**, и каждая часть записывается в отдельную строку с одинаковым `objid`, но разным `part` (например, 0, 1, 2...). - Объект в 1С (например, документ или справочник) ссылается на это содержимое через специальное поле типа `Хранилище` или `Приложение`. --- ### 🔹 Где используется в конфигурации? В конфигурации 1С это может быть: - Поле с типом **"Хранилище"** (например, `ХранилищеФайла`) - Использование объекта `Приложение` в коде (например, `Новый Приложение`) - Вложения в электронной почте (в конфигурациях с почтой) - Миниатюры изображений - Подписи, электронные подписи и т.п. --- ### 🔹 Пример запроса: ```sql -- Получить все части двоичных данных для конкретного объекта SELECT objid, part, DATALENGTH(data) AS size FROM dbo.binarydata WHERE objid = 'A1B2C3D4-...' ORDER BY part; ``` > ⚠️ **Важно**: Прямое редактирование таблицы `binarydata` напрямую в SQL **не рекомендуется**, так как это может повредить целостность данных в 1С. Все операции с двоичными данными должны выполняться через платформу 1С. --- ### 🔹 Как посмотреть, к какому объекту относится запись? Чаще всего `objid` соответствует ссылке (`Ref`) на объект в других таблицах. Например: ```sql -- Попробовать найти, где используется objid SELECT TOP 10 * FROM dbo.DOCUMENT_Документ WHERE Ref = 'A1B2C3D4-...' ``` Или использовать `UUID` в запросе к `CONFIG` или `OBJECTS` (в зависимости от структуры). --- ### 🔹 Альтернативные таблицы: В более новых версиях 1С (особенно при использовании **файлового хранилища**) двоичные данные могут храниться **не в `binarydata`**, а в отдельных файлах на диске, а в базе — только ссылки. Это управляется настройкой **"Хранить двоичные данные в файлах"** в конфигураторе. --- ### 🔚 Вывод: `dbo.binarydata` — это **основная таблица для хранения вложений и двоичных данных** в 1С на SQL Server. Она используется автоматически платформой и не предназначена для прямого доступа извне, хотя анализировать её можно (с осторожностью). Если нужно извлечь файл из `binarydata` — это делается программно через 1С или с помощью скриптов, собирающих части по `objid` и `part`, и объединяющих `varbinary` в файл. Если нужно — могу помочь с примером извлечения файла из `binarydata` через SQL или C#. |
|||
30
PR
04.08.25
✎
17:41
|
А, ну и все
Попытался в реквизит справочника типа хранилище значения запихнуть cf файл, получил такое Невосстановимая ошибка Ошибка при выполнении запроса POST к ресурсу /e1cib/logForm: по причине: Ошибка СУБД: Microsoft OLE DB Driver for SQL Server: Недопустимое имя объекта "BinaryData". HRESULT=80040E37, SQLSrvr: SQLSTATE=42S02, state=1, Severity=10, native=208, line=1 Расходимся, лентяи :)) |
|||
31
Garykom
гуру
04.08.25
✎
17:52
|
(27) А теперя повтори на бис на разных версиях платформы 1С и с разными режимами совместимости
|
|||
32
arsik
гуру
04.08.25
✎
17:53
|
(31) Вот тут уже все объяснили
Ошибка хранилища двоичных данных - 'Ошибка блочного хранения двоичных данных' 8.3.27.1644#7 |
|||
33
PR
04.08.25
✎
17:59
|
(31) Любой каприз
Куда кидать КП? |
|||
34
Garykom
гуру
04.08.25
✎
18:08
|
(33) Так и не признаешься что слегка наврал (ибо от версии платформы и режима совместимости зависит) с
Открываю список таблиц, вижу везде dbo.BinaryData
в (26)? |
|||
35
PR
04.08.25
✎
18:16
|
(34) Я и не утверждал, что такая есть везде
Очевидно же, что это бред и что появилась она в какой-то момент Я сказал лишь, что это типовая табличка 1С, а не приблуда какого-то расширения или какой-то приложухи К чему твоя попытка натянуть сову на глобус? |
|||
36
PR
04.08.25
✎
18:16
|
+(35) Посмотрел сейчас в ERP, там нет
И че и че? |
|||
37
Sevish
05.08.25
✎
05:02
|
Огромное спасибо за разбор ситуации!!!
А почему раньше эта таблица так не раздувалась? У меня самый ранний бэкап от 06.06.2025, там ещё у меня была платформа 8.3.26. Таблица эта то же была, но весила всего 2 Гб. С тех пор никаких доработок, которые бы что-то пихали в хранилище не было. Остался у меня один вопрос: как все же посмотреть и понять что именно её раздувает? |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |