Сжатие баз данных 1С:Предприятие в MS SQL Server

0. Алексей Бочков (Aleksey.Bochkov) 2855 29.01.12 21:19 Сейчас в теме
Тема сжатия баз данных 1С в настоящий момент довольно часто обсуждается. Достоинства сжатия известны – уменьшение размера базы данных, уменьшение нагрузки на дисковую подсистему и некоторое ускорение выполнения тяжелых операций чтения/записи. Из недостатков – небольшое увеличение нагрузки на процессоры сервера СУБД за счет расхода ресурсов на компрессию/декомпрессию данных. Но при использовании в качестве MSSQL и DB2 (за Oracle и PostgreSQL не скажу, т.к. не знаю) есть один «подводный камень» - при выполнении реструктуризации происходит декомпрессия новых таблиц и индексов. Происходить это может как при выполнении обновления конфигурации с изменением структуры метаданных, так и при выполнении тестирования и исправления ИБ (реиндексация пересоздает только индексы, а реструктуризация – и таблицы, и индексы). «Проблема» кроется в том, что признак сжатия устанавливается индивидуально для каждой таблицы и индекса.

Перейти к публикации

Комментарии
1. Александр Капустин (kapustinag) 29.01.12 21:19 Сейчас в теме
Пытались на своих базах оценить, какой получался выигрыш в размере БД, и какова была цена - то есть проигрыш в производительности?
2. albochkov (Aleksey.Bochkov) 29.01.12 21:27 Сейчас в теме
(1) БД уменьшались в размерах на 40-80% в зависимости от характера данных. Значимого увеличения нагрузки на процессоры не зафиксировали.
3. Модератор раздела Артур Аюханов (artbear) 30.01.12 12:13 Сейчас в теме
(0) База размера 40-50 (и более) Гигов как долго сохраняется в формат dt через 1С ?
4. albochkov (Aleksey.Bochkov) 30.01.12 12:47 Сейчас в теме
(3) Это сильно зависит от типа конфигурации и оборудования.
У меня на сервере разработки, например, выгрузка базы УТ 10.3 размером 60-70 Гб в dt занимает около часа.
В тоже время, Консолидация объемом ~250Гб выгружается около 2-х часов.
5. Андрей Иванов (a.ivanov) 24.09.12 12:19 Сейчас в теме
Нафига весь этот огород с триггерами, если можно повесить регламент который будет включать сжатие. И выполнять его с нужной периодичностью. Например раз в три дня или неделю. Зависит от интенсивности изменений рабочей базы.
user590836_zhan_chick; +1 Ответить
6. albochkov (Aleksey.Bochkov) 24.09.12 12:26 Сейчас в теме
(5) a.ivanov, Вы, видимо, не совсем внимательно прочитали. Регламент не спасет от декомпрессии базы при очередном обновлении, а триггеры позволят изначально создавать таблицы сжатыми.
7. Алексей Бочков (Aleksey.Bochkov) 2855 26.03.15 05:45 Сейчас в теме
В качестве апдейта - прошло 3 года, на разных серверах мы использовали данную методику для MS SQL 2008/2012/2014 - везде полет нормальный.
Один из наиболее нагруженных серверов: >300 сжатых баз разработчиков, несколько дисковых массивов суммарной емкостью 4Тб заполнены на 80%.
Без сжатия аналогичное количество информации занимало бы >10Тб. ИМХО, неплохая оптимизация :).
34. Иван Иванов (user617299_gecav) 18.10.17 16:05 Сейчас в теме
Всем привет.

Подскажите в чем может быть проблема все сделал как указано выше но при загрузки базы из .td через не продолжительно время выдает следующую ошибку:

(Ошибка обращения к серверу 1С:Предприятия. по причине: server_addr=tcp://serv-1ctest:1560 descr=10054(0x00002746): Удаленный хост принудительно разорвал существующее подключение. line=1574 file=src\DataExchangeTcpClientImpl.cpp)

Windows Server R2 2008 x64
MS SQL R2 2008
1C 8.3.10.2252

P.S. Отключение IPv6 вот по этой статье не помогло https://forum.infostart.ru/forum72/topic170954/
Прикрепленные файлы:
8. Алексей Лустин (lustin) 902 31.03.15 13:31 Сейчас в теме
В дополнение - сводный коэффициент увеличения производительности 1.9 раза по сравнению с несжатыми базами. сводное уменьшение объема 2.3 раза. Результат получен в течении нескольких лет на 134 базах находящихся под мониторингом и проверкой качества.

P.S. Последние 2 года все базы вначале сжимаются - будь то MSSQL или Oracle. На такую же технологию перевели и PostgreSQL
Bronislav; kardanovir; new_user; DimaP; Aletar; Aleksey.Bochkov; +6 Ответить
9. Михаил Максимов (МихаилМ) 31.03.15 14:06 Сейчас в теме
использую возможности ddl триггеров для отмены пересоздания таблиц при реструктуризации.

эта возможность дает:

создание собственных индексов
подменять таблицы представлениями
секционирование
перенос таблиц в другие файловые группы

те набор стандартных действий по управлению производительностью субд.


ddl триггеры поддерживаются всеми субд работающими с 1с.

подобную тему не создавал тк явно противоречит лицензии.
10. Алексей Захаров (almas) 191 19.09.15 09:14 Сейчас в теме
Статья супер. Пробуем воспользоваться, посмотрим, что получится...
11. Алексей Захаров (almas) 191 19.09.15 09:47 Сейчас в теме
К данной статье считаю, что просто необходимо привести еще одну ссылку:
забудем о свертке

а так, же прилагаю скриптик для сжатия баз

EXEC sp_MSforeachtable 'ALTER INDEX ALL ON ? REBUILD WITH (DATA_COMPRESSION = PAGE)'
GO

EXEC sp_MSforeachtable 'ALTER TABLE ? REBUILD WITH (DATA_COMPRESSION = PAGE)'
GO

И еще на что из статьи обратил внимание:
Важное замечание - функция сжатия таблиц доступна только для обладателей версии Enterprise SQL Server
vasiliy_b; Silenser; Perk0n; Aule2; Anzhey; +5 Ответить
12. Александр Тарасюк (Aletar) 12.11.15 10:12 Сейчас в теме
Применили сжатие для некоторых баз. Кроме того, что места стало вагон, так и производительность прилично возросла, так как исчезли ожидания PAGELACTH.
Так что спасибо Вам огромное.
13. Дмитрий К (SuhoffGV) 12.01.16 16:23 Сейчас в теме
Вопрос к знатокам:

Дано:
1. 1c82, postgresql, база с большим количеством файлов в реквизитах типа хранилище_значений (сканы, pdf и т.п.). Объем базы в PGAdmin ~60Gb.
2. Обработкой вычищаю из базы файлов ~ на 17Gb. Объем базы в PGAdmin не поменялся.
3. Делаю выгрузку/загрузку в/из dt. Объем базы в PGAdmin 30Gb.

Вопросы:
1. Как уменьшить размер базы (сжать базу) БЕЗ загрузки/выгрузки в dt?

14. Алексей Бочков (Aleksey.Bochkov) 2855 17.01.16 01:53 Сейчас в теме
15. Валентин Будкин (vabue) 119 25.01.16 17:30 Сейчас в теме
Для MS SQL 2012 подход аналогичный?
16. Алексей Бочков (Aleksey.Bochkov) 2855 27.01.16 07:25 Сейчас в теме
(15) vabue,
Да, этот подход работает во всех последующих версиях - 2012/2014/2016
21. Наталия Мастербатова (zzz_natali) 57 08.12.16 05:50 Сейчас в теме
(16)
Несколько вопросов, если позволите:
1. Если после запуска вашего скрипта что-то пошло через ж..., то какими командами всё вернуть в статус-кво?
2. Я правильно поняла, что эта фишка работает только на Enterprise версиях?
3. Если БД расположены на твердотельных накопителях(SSD), то все телодвижения по сжатию таблиц теряют смысловую нагрузку?
Спасибо.
22. Алексей Бочков (Aleksey.Bochkov) 2855 09.12.16 09:28 Сейчас в теме
(21)
1 - триггер работает в рамках транзакции 1С. Если что-то пойдет не так, то 1С откатит транзакцию и сообщит об ошибке, повреждений в базе при этом не будет. Для отката изменений необходимо отключить триггер и выполнить полную реструктуризацию или выгрузку/загрузки через dt-файл.

2 - это верно для SQL2005-2014. Начиная с SQL2014 SP1 (выпущена 16 ноября 2016) сжатие доступно во всех версиях, в том числе бесплатной Express редакции.
https://blogs.msdn.microsoft.com/sqlreleaseservices/sql-server-2016-service-pack-1-sp1-released/
(в публикации также скорректировал это)

3 - в общем случае, сжатие позволяет снизить нагрузку на сеть/хранилище вне зависимости от типа хранилища.
Если процессор станет узким местом, то вместо увеличения производительности можно получить обратный эффект.
Исходя из своей практики - есть смысл сжимать большие таблицы даже для очень быстрых сетевых хранилищ с 100-500k IOPS.
27. Алексей Олешко (retif) 12.04.17 10:44 Сейчас в теме
(22)
2 - это верно для SQL2005-2014. Начиная с SQL2014 SP1 (выпущена 16 ноября 2016) сжатие доступно во всех версиях, в том числе бесплатной Express редакции.
https://blogs.msdn.microsoft.com/sqlreleaseservices/sql-server-2016-service-pack-1-sp1-released/
(в публикации также скорректировал это)


Начиная с SQL2014 SP1
Наверно все таки Начиная с SQL2016 SP1
33. Наталия Мастербатова (zzz_natali) 57 03.10.17 09:44 Сейчас в теме
(22)
>триггер работает в рамках транзакции 1С
>Для отката изменений необходимо отключить триггер и выполнить полную реструктуризацию или выгрузку/загрузки через dt-файл.
Если модель восстановления не полная, а простая, то также ничего страшного?

И еще пара вопросов блондинского характера, если позволите...
1.Если компрессную базу выгрузить в *.bak, а потом загрузить в другую обычную базу, то что получим на выходе по объёму, карету или тыкву?
2.То же, что и в п. 1, но *.bak от компрессной базы поднимаем на другом обычном SQL-сервере
3. Если компрессную базу отсоеденить от скулы и потом копирнуть и поднять mdf/ldf на другом обычном SQL-серваке, то как такая база себя поведет?
Спасибо.
37. Антон Грачев (Fragster) 817 27.10.17 15:07 Сейчас в теме
(33)

И еще пара вопросов блондинского характера, если позволите...
1.Если компрессную базу выгрузить в *.bak, а потом загрузить в другую обычную базу, то что получим на выходе по объёму, карету или тыкву?
2.То же, что и в п. 1, но *.bak от компрессной базы поднимаем на другом обычном SQL-сервере
3. Если компрессную базу отсоеденить от скулы и потом копирнуть и поднять mdf/ldf на другом обычном SQL-серваке, то как такая база себя поведет?
Спасибо.


Сжатие сохранится во всех случаях.
38. Антон Грачев (Fragster) 817 27.10.17 15:08 Сейчас в теме
(21)
1. после срабатывания триггера и включения сжатия для таблиц можно "раскукожить обратно" с помощью https://infostart.ru/public/692209/ , заменив DATA_COMPRESSION = PAGE на DATA_COMPRESSION = NONE
17. Vova Petrov (bdsmka) 31.03.16 07:19 Сейчас в теме
Статья супер, огромное спасибо. SQL server 2014 ent УТ 10.3 с 96гиг ужалась до 8.5гиг!!!!!(10х))) Комплексная 2.0 с 180гиг до 60гиг.(3х)
18. Максим Кравченко (inomaratadeath) 31.05.16 12:57 Сейчас в теме
поясните нубу, сжатие базы - описанное в этом топике - это опция в свойствах базы >параметры>автоматическое сжатие>true? Или это что-то другое? И автошринкует ли это файл лога транзакций, или я совсем не в ту степь ушёл?
19. Алексей Бочков (Aleksey.Bochkov) 2855 10.06.16 08:13 Сейчас в теме
(18) inomaratadeath,
нет, к автоматическому сокращению размера БД (shrink database / auto shrink) это отношения не имеет.
Тут речь идет именно о сжатии данные в таблицах.
20. Татьяна Лустина (Silverbulleters) 304 04.09.16 23:51 Сейчас в теме
думаю стоит поднять тему, для тех кто прочитает эту статью в будущем

на самом деле на данный момент существует некая противоречивая ситуация

* если вы напишите в компанию 1С на официальный адрес поддержки - вам ответят что данный подход является нарушением лицензионного соглашения.

оно и понятно - конструкции ALTER TABLE, ALTER INDEX (также кстати как и CREATE INDEX) является вмешательством в структуру БД (изменением схемы данных), что запрещено лицензионным соглашением.

* однако во многих конечных компаниях при владении MSSQL Enterprise руководствуются другими документами, а именно

https://technet.microsoft.com/en-us/library/dd894051(v=sql.100).aspx

для ленивых, не желающих ходить по ссылке процитирую


What can you compress? Anything in the following list that meets the above criteria…
A table with no organization (“heap” structure);
A table organized as a clustered index;
A nonclustered index;
An indexed view (remember, these do persist on disk);
Partitioned tables and indexes (each partition can be configured differently);


Как все помнят нас интересует


A table organized as a clustered index;
A nonclustered index;


так как это основные типы наших табличек в мире 1С.

позволю себе еще процитировать


Data compression provides multiple benefits. It saves disk space, and it can help improve the performance of certain workloads. The benefits of data compression come at the cost of higher CPU usage for compressing and decompressing the data. Therefore, it is important to understand the workload characteristics on a table before deciding on a compression strategy. Data compression provides flexibility in terms of levels of compression (row or page) and the objects you can compress (table, index, partition). This enables fine-tuning the compression based on the characteristics of data and the workload.
Another important advantage of data compression is that it works transparently to the application, and it works well with other SQL Server features, such as TDE and backup compression.
The results shown in this white paper are based on the data and the hardware used in our tests. Your results will vary based on your own data, workload and hardware. Perform thorough testing when deciding what tables and indexes to compress.


очень важен пункт


Другим важным преимуществом сжатия данных является то, что оно работает прозрачно для приложения, и она хорошо работает с другими функциями SQL Server, такие как TDE и сжатие резервных копий.


то есть рисков никаких... казалось бы, однако...


Implementing compression is a multi-step process:

Figure out what objects you should compress
Plan to handle all of your environments (dev, QA, production)
Compress them during a low-activity window
Regularly patrol your environments checking for added objects that weren’t compressed
Keep your environments in sync


Обратите внимание на рекомендации PFE инженеров от Microsoft

* планируйте точно какие объекты вы ДОЛЖНЫ сжимать
* применяйте сжатие на всех своих контурах приложения, а не только продуктивном
* сжатие применяйте в периоды наименьшей активности
* регулярно проверяйте какие объекты у вас не сжаты
* синхронизируйте окружения

для тех кто не в курсе - существует такая хитрая версия как SQL Server Developer Edition, эта версия полнофункциональная и предназначена для проверки разработчиком функциональности вплоть до Enterprise, на проверочном контур (не продуктивном)

Но вернемся к противоречию - как мы видим использование сжатие, требует наличия внутреннего инженера по SQL серверу и определённого менеджмента это самого процесса владения SQL сервером.

И теперь становится понятным почему на партнерской конференции был получен ответ


Вариант использования их без надлежащей поддержки мы считаем неправильным, так как он приводит к проблемам в администрировании.


как мы видим вверху он в целом соответствует рекомендациям компании Microsoft - буздумно и без поддержки включать сжатие просто не соответствует Best Practics от Microsoft.


А теперь маленькое замечание - если вы ИСПОЛЬЗУЕТЕ сжатие советую ознакомиться с еще одной интересной штукой

https://www.brentozar.com/sql/tempdb-performance-and-configuration/

Грамотный DBA, сжатие и история с tempdb позволяет ускорить ЗУП в 4.5 раза ;-) как минимум.
headMade; корум; Berckk; pbazeliuk; pumbaE; lustin; kardanovir; JohnyDeath; Bronislav; nixel; new_user; +11 Ответить
23. Канат Джумадылов (Fox-trot) 54 09.12.16 10:37 Сейчас в теме
судя по задаваемым вопросам скоро и бухгалтера начнут заниматься администрированием sql-серверов
24. Антон Грачев (Fragster) 817 09.12.16 12:45 Сейчас в теме
повесил триггер на тестовую базу, изменил текст таким образом:

CREATE TRIGGER [data_compression]
ON DATABASE
AFTER CREATE_TABLE
AS
DECLARE
@SchemaName nvarchar(150),
@ObjectName nvarchar(150),
@DatabaseName nvarchar(150),
@cmd nvarchar(500)

--Получим имя схемы из выполняемой команды CRE ATE TABLE
SET @SchemaName = EVENTDATA().value('(/EVENT_INSTANCE/SchemaName)[1]','nvarchar(150)')
--Получим имя таблицы
SET @ObjectName = EVENTDATA().value('(/EVENT_INSTANCE/ObjectName)[1]','nvarchar(150)')

--Получим имя базы
SET @DatabaseName = EVENTDATA().value('(/EVENT_INSTANCE/DatabaseName)[1]','nvarchar(150)')
--Сформируем из полученных данных требуемую команду на установку признака сжатия для таблицы
set @cmd = 'ALT ER TABLE [' + @DatabaseName + '].[' + @SchemaName + '].[' + @ObjectName + '] REBUILD PARTITION = ALL WITH (DATA_COMPRESSION = PAGE)'

--Теперь проверяем настройки – если базы нет в таблице CompressionSetting.dbo.Databases с признаком Active = 1, то выполняем команду, иначе игнорируем
INS ERT INTO CompressionSetting.dbo.trace (text, DatabaseName, DateTime) SELE CT @cmd, @DatabaseName, GETDATE()

EXEC (@cmd)

получил ошибку при реструктуризации:

В процессе обновления информационной базы произошла критическая ошибка
по причине:
Ошибка СУБД:
Microsoft SQL Server Native Client 11.0: Cannot find the object "dbo._Node6782NG" because it does not exist or you do not have permissions.
HRESULT=80040E37, SQLSrvr: SQLSTATE=42S02, state=C, Severity=10, native=1088, line=1
25. Алексей Бочков (Aleksey.Bochkov) 2855 14.12.16 08:33 Сейчас в теме
(24) не могли бы вы снять трассировку SQL запросов и прислать? У меня нормально работает с триггером внутри базы (SQL2014 + 8.3.7)
36. Антон Грачев (Fragster) 817 23.10.17 17:32 Сейчас в теме
(25) моя ошибка. Не создал таблицу trace, из-за этого падал триггер и таблица *ng не создавалась. Почему-то 1с не выдавала на этом этапе ошибку, а пыталась в нее вставить данные и получала ошибку об отсутствии таблицы.
26. Evgeny Voropaev (user643364_voropaev.evgeny) 20.02.17 19:10 Сейчас в теме
Добрый День всем!

мы, в нашей компании, занимаемся переводом базы 1С77 ТиС(релиз27) из файлового формата .dbf в формат MSSQL 2000 сервера. Размер базы ~900Mb.
Для этого используется стандартная, описанная, процедура данного перевода: через выгрузку-загрузку файла переноса данных базы.
Но во время загрузки файла переноса в SQL, Конфигуратор1С стопится с ошибкой от SQLя, принтскрин которой я привожу.
На всякий случай вот:

--------------------------------------------------------------------------------

SQL State: 23000
Native: 1505
Message: [Microsoft][ODBC SQL Server Driver][SQL Server]CREATE UNIQUE INDEX terminated because a duplicate key was found for index ID2. Most significant primary key is ' 15N '.

SQL State: 01000
Native: 3621
Message: [Microsoft][ODBC SQL Server Driver][SQL Server] The statement has been terminated.

--------------------------------------------------------------------------------

Телодвижение с пунктом Тестирование и Исправление базы из 1C Конфигуратора- никак на результат не влияет: ошибка не уходит.
Cам я не программист 1С и не SQL dba. Я специалист по сетям..


Что можно сделать с базой или ,возможно, с настройками в SQL2000 чтобы попытаться своими силами решить проблему данной ошибки ?
29. Сергей Сизов (sssss_aaaaa_2011) 12.09.17 15:02 Сейчас в теме
(26)Никакими настройками, танцами с бубном и прочими выкрутасами дублирование ключевых данных не устраняется. А нужно именно оно. Но для этого надо хоть немного быть с данными на "ты".
Надо найти таблицу/ы, у которой/ых есть индекс ID2, определить по каким полям он сделан, найти записи с содержанием этих полей равным упомянутому ' 15N ', подумать над возможностью удаления нужного количества этих записей, и, наконец-то, удалить таки удалить выбранные записи.
Может лучше позвать спеца по sql базам?
28. Наталия Мастербатова (zzz_natali) 57 12.09.17 14:22 Сейчас в теме
После запуска ваших подготовительных скриптов, в таблице dbo.Databases должны появиться рабочие базы(которые на сервере) или как?
У меня эта таблица пустая.
Спасибо.
30. InzPtic (Dm_Kz) 19.09.17 13:03 Сейчас в теме
Имхо, для задачи сжатия базы, лучше ограничивать область действия триггера базой данных, а не сервером. То есть использовать аргумент "ON DATABASE", а не "ON ALL SERVER"
31. InzPtic (Dm_Kz) 19.09.17 13:27 Сейчас в теме
Ещё момент - при пересоздании базы через dt-файл структура таблиц в скуле будет очищена и использование, например, триггера
ALTER TABLE [имя базы].[имя схемы].[имя таблицы] REBUILD PARTITION = ALL WITH (DATA_COMPRESSION = PAGE)
приведет к аварийному падению конфигуратора и разрушению БД так как таблицы в базе ещё не будет.
32. Наталия Мастербатова (zzz_natali) 57 02.10.17 16:36 Сейчас в теме
(31) Может всё-таки не DT'шить, а перебор таблиц и индексов и установки для них признака сжатия?
35. Дмитрий (kofr1c) 22.10.17 14:30 Сейчас в теме
Читаю комменты и не могу понять, откуда люди получают увеличение производительности после сжатия. Да,дисковый ввод-вывод стал быстрее, но по остальным параметрам - замедление.
В рабочих процессах (проведение документов,формирование отчетов) скорость работы упала незначительно (до 20 мс на проведении документов и до 2-4 секунд на формировании отчетов). Зато при административных процессах (реиндексация,проверка целостности базы, реструктуризация) производительность упала на часы!
Все тесты производились в однопользовательском режиме на разных ксеонах e5-2600 (от V2 до V4) и на разных серверах.
39. Наталия Мастербатова (zzz_natali) 57 27.10.17 16:05 Сейчас в теме
(35) У меня хуже: посыпались блокировки и меня юзверя заклевали, что невозможно проводить "тяжёлые" документы. Пришлось срочно разжимать базу.
40. Антон Грачев (Fragster) 817 27.10.17 17:07 Сейчас в теме
(39) Что за конфигурация, режим управления блокировками?
42. Наталия Мастербатова (zzz_natali) 57 27.10.17 17:19 Сейчас в теме
(40) УПП 1.3, классика, родная, не дописаная
41. Михаил Петухов (oldfornit) 27.10.17 17:10 Сейчас в теме
(39) заклевали случайно не в момент сжатия?
43. Наталия Мастербатова (zzz_natali) 57 27.10.17 17:25 Сейчас в теме
(41) Не, не в момент. На след. день. Вроде после сжатия статистики надо было обновить и freeproccache'ить... Не помню, обновила или нет. Всё равно сервак кривой(dt'шка в базу не грузится). Хочу переподнять на 2016й винде/скуле и еще раз попробовать сжатие запендорить.
44. Михаил Петухов (oldfornit) 27.10.17 17:31 Сейчас в теме
(43) тогда не уверен, что проблема связана именно со сжатием.
Аналогичные ошибки видел:
1. из-за кривого релиза платформы,
2. из-за использование кластера серверов из двух и более машин,
3. из-за того, что сам скуль-сервер изображал неизвестно что.
4. И даже из-за того, что кто-то в этот момент перепроводит какой-нибудь расчет себестоимости.
Проблема усугубляется тем, что у родной недопиленной упп-ки режим совместимости стоит 8.2.13. Я бы перешел минимум на 8.2.16 - это не потребует никаких доработок.
45. Наталия Мастербатова (zzz_natali) 57 27.10.17 17:56 Сейчас в теме
(44) Напомните, плиз, после обновления БД на новый релиз совместимость слетит на дефолт(8.2.13) или остается на той, которую выставили? Спасибо.
46. Михаил Петухов (oldfornit) 27.10.17 17:59 Сейчас в теме
(45) после обновления конфигурации?
Там процесс обновления немного поменяется. Будут показаны расхождения с конфигурацией поставщика с возможностью выбрать. В данном случае будет регуляция банально на уровне галочек.
47. Наталия Мастербатова (zzz_natali) 57 27.10.17 18:20 Сейчас в теме
(46) Не, я имею в виду, что если я сниму с поддержки, выставлю режим совместимости 16, создам из этой базы файл поставки 1cv8.cf, загружу его же в БД, тем самым встав на поддержку(замок). То при следующем обновлении что будет с режимом совместимости?
1. Всё будет чики-брики: режим совместимости останется 16м
2. Всё откатится на 13й
3. Обновление на автопилоте не скушает и нужно шаманить с крыжиками
4. другое...
51. Михаил Петухов (oldfornit) 07.11.17 09:46 Сейчас в теме
(47) все зависит от следующего файла обновления скорее всего.
48. Антон Грачев (Fragster) 817 27.10.17 18:35 Сейчас в теме
Добавил скрипт для сжатия путем перебора таблиц и индексов: https://infostart.ru/public/692209/
49. Наталия Мастербатова (zzz_natali) 57 27.10.17 19:44 Сейчас в теме
(48) Да, спасибо. Шустренько так запросик отработал.
50. Михаил Шайдуров (Mshaydurov) 02.11.17 11:06 Сейчас в теме
Сделал все по инструкции на SQL Express 2017
Платформа 8.3.10.2561
При ТИИ, а именно
Реструктуризация таблиц информационной базы
Равно как и при любой другой реструктуризации
выдается ошибка:

Microsoft SQL Server Native Client 11.0: Недопустимое имя объекта "CompressionSetting.dbo.Databases".
HRESULT=80040E37, SQLSrvr: SQLSTATE=42S02, state=1, Severity=10, native=208, line=23

Подскажите, пожалуйста, как поправить.
52. Наталия Мастербатова (zzz_natali) 57 07.11.17 11:55 Сейчас в теме
(50) Надо почитать, SQL Express 2017 позволяет сжатие БД
53. PlatonovStepan (Jogeedae) 39 02.04.18 09:59 Сейчас в теме
Появилась проблема при включении триггера, если использовать конструкцию:
select * into [myDB].[dbo].[table1_copy] fr om [myDB].[dbo].[table_copy]


----------
Ошибка:
Схема изменена после того как была создана целевая таблица. Запустите запрос Select Into повторно.



А также если используются разреженные столбцы в таблицах, то при изменении индекса произойдёт ошибка:
Не удалось создать или перестроить таблица "Table_1". Сжатые индексы не поддерживаются для таблиц, содержащих разреженные столбцы или столбцы набора столбцов.
54. PlatonovStepan (Jogeedae) 39 02.04.18 16:47 Сейчас в теме
(53)
Сам себе отвечу, пожалуй.
С триггерами, которые даже потенциально могут вызвать исключительную ситуацию нужно быть крайне осторожными.
Чтобы минимизировать эти моменты, включая те, которые были описаны в (53), можно перенести включение режима сжатия для данных в некий регламент, выбрав таблицы с помощью следующего запроса:
sel ect DISTINCT s_tab.name fr om sys.tables s_tab
join sys.partitions s_part on s_tab.object_id = s_part.object_id and s_part.data_compression = 0 --выбираем таблицы с режимом 'NONE'
join sys.columns s_col on s_tab.object_id = s_col.object_id and s_col.is_sparse = 0 and s_col.is_column_set = 0 --...и без полей с признаком разреженных столбцов
ORDER BY 1


либо триггер может всё так же формировать таблицу для выполнения команд потаблично, без модификации данных, а регламентное задание их выполнять, удаляя выполненные.
Оставьте свое сообщение