Как связать 1с с sql

Обновлено: 23.04.2024

В этот раз хотелось бы снова поговорить о прямых запросах к СУБД. Да, автор статьи слышал о том, что 1С крайне не рекомендует этим заниматься. Однако же заниматься этим мы будем с одной оговоркой – базы, с которыми предстоит поработать имеют отличное от 1С происхождение. Уже предчувствую возгласы – есть же «Внешние источники данных» в конфигурации, ими и пользуйтесь. Пользовались, умеем, однако же мнения публики об этом объекте конфигурации весьма противоречивы и многие из них далеко не восторженные. Основное преимущество их – понятная всякому, даже начинающему, программисту 1C методика работы с ними – либо аналогично объектам вроде документов и справочников, либо очень напоминающая непериодический независимый регистр сведений.

Вместе с тем есть и неприятные особенности. Прежде всего – отдельные типы данных «внешний источник» переваривает со скрипом. А чтобы положить в этот источник ссылку объекта в том виде, в каком она хранится в СУБД приходится указывать тип «Уникальный идентификатор», преобразовывать идентификаторы объектов в строки и заниматься перестановками групп символов. Случалось и так, что при указании строки подключения в пользовательском режиме ошибался, но вместо повторного запроса таковой просто получил бесконечные исключения при попытке обращения к нему.

В тоже время, для работы с иными базами данных «Внешний источник данных» нам совершенно не обязателен. Ведь научить 1C выполнять запросы к MS SQL или иной СУБД большой проблемы не составляет. Зато преимуществ получается сразу довольно много. Как ни крути, а СУБД – запросы как способ интеграции во многом выигрывают даже у WEB-сервисов, а у выгрузок/загрузок через файловую систему подавно.

Начнем с самого простого. Имеем стороннюю базу с полезными нам данными. Имеем 1С, которой эти данные полезны, но которая их не имеет. Как же их достать? В MS SQL отлаживаем запрос, на стороне 1С обеспечиваем формирование его текста с необходимыми условиями отбора и создаем пару функций, позволяющих подключиться к СУБД и получить из нее таблицу значений. Ну а дальше вопрос её обработки, зависящий от конкретной задачи и особенностей выбранного пути её решения.


В общем-то на этом вопрос получения данных из внешней базы закрывается. Но остается второй, куда более обширный вопрос – как же наоборот, выгрузить данные из 1С в базу данных на «чистом» SQL? Web-сервисы, COM-соединения и промежуточные файлы не рассматриваем ввиду тематики статьи, хотя они имеют место быть и часто даже оказываются уместными, про эти вещи и без меня написано достаточно. А в рамках данной статьи нам будут интересны именно пути, предполагающие прямое взаимодействие с SQL.

Способ 1. Очевидный (но не лучший).

Уверен, что это первое, что приходит в голову разработчику, по крайней мере не из касты 1С – вооружаемся SQL-профайлером, любой консолью запросов и любой обработкой, раскрывающей структуру хранения базы данных и готовим прямой запрос к данным 1С. Далее этот запрос размещается где-нибудь в недрах стороннего продукта и обеспечивает получение данных. Это в теории. На практике же кроме использования на уровне СУБД нумерованных имен вместо отражающих смысл хранимой информации вылезают «подводные камни», подробнее о которых можно посмотреть здесь. Но в любом случае на выходе имеем нечто подобное:

Из плюсов можно отметить разве что возможность передать эти задачи IT-специалистам из областей, отличных от 1С и в частности – занимающимся поддержкой целевой базы. Правда тут тоже есть свои ньюансы, т.к. радиус кривизны рук сильно варьируется не только среди 1С-ников, и на сервере с СУБД могут «завестись» интересные задания, гоняющие одни и те же данные через десяток таблиц и пытающиеся обработать миллионы строк из какого-нибудь регистра с себестоимостью в нашей 1С, а разобраться в них, не принимая участия в непосредственном создании окажется крайне затруднительно. Но не забывайте, что когда-нибудь могут попросить помочь с этим разобраться и Вас.

Способ 2. Удобный (хотя и не столь очевидный)

Мысль эта посещает не сразу, а когда посещает часто бывает уже поздновато, но все-таки: Если со стороны внешней базы не получается прочесть данные с нормальными именами полей, то почему бы не заставить 1С работать на запись? Реализация этого мероприятия несколько сложнее, чем чтения из внешней базы, тем не менее ничего сверхъестественного из себя не представляет. Прежде всего потребуется еще одна функция, которая будет выполнять SQL запросы, не предполагающие возврат какого-либо результата.

Далее обратим внимание на структуру данных, таблиц, в которые будем писать. Помимо целевых полей, нам потребуется ключ, позволяющий однозначно идентифицировать принадлежность строк данных во внешней базе объектам 1С. Иначе говоря, смотрим как 1С хранит ссылки объектов и добавляем во всякой таблице с выгружаемыми нами данными поля с аналогичным типом данных и размерностью, т.е. binary(16)

Определяемся предполагает ли наша разработка соответствие одному объекту базы 1С одной записи внешней таблицы (как пример – отражение записи справочника), или же записей может быть несколько (отражение или имитация движений документов или табличных частей объектов). Для второго случая добавляем поле с номерами строк.

Не обязательно, но полезно при разборе полетов – Дата и время фактической записи во внешнюю таблицу.




Осталось самое главное – обеспечить запись данных в SQL. Как именно это будет выполняться – в подписке при непосредственном изменении (записи) объекта в 1C, регламентным заданием по расписанию, или по требованию пользователя зависит только от контекста задачи и личных вкусов разработчика. Нам же важен сам механизм. В зависимости от наличия одной строки (идентифицируется Ссылкой однозначно) или группы строк (т.е. строка идентифицируется по Ссылке и автономеру строки) запись будет слегка отличаться.


Принцип работы таков:

  1. Обеспечиваем выборку и при необходимости программную обработку данных. Функциям в качестве основного аргумента подходит как результат запроса, так и таблица значений.
  2. Собираем параллельно два запроса в формате SQL, первый удаляет из внешней таблицы записи по значению ключевого поля, второй добавляет свежие. Не забываем, что длина неограниченной строки в реальной жизни ограничена и составляет в районе 200 000+ символов, после которых растет только значение, определяемое через СтрДлина(), но не сама строка. Данный факт сам собой задает нам размер объема данных, которые могут быть обработаны за одно обращение к SQL. После превышения предельной длины строки немедленно выполняем запросы и приступаем к формированию новых. Тем самым, обработка данных ведется блоками. Даже если бы нам очень не хотелось морочиться с её обеспечением, это пришлось бы сделать применительно к большинству практических задач.
  3. По завершении обхода еще раз выполняем запрос и записывает тем самым последнюю порцию данных.


Примеры обращения:

И, наконец проверяем результат:



С некоторых пор при экспорте данных из 1С на уровне SQL стараюсь работать только на запись. Проблем с быстродействием замечено не было. Затраты времени – минимальны, фактически процесс разработки сводится к написанию запроса. Думается, что и для поклонников каноничного объекта «Внешние источники данных» аналогичный инструмент может быть легко реализован, хотя и без гарантий отсутствия некоторых проблем с совместимостью и преобразованиями типов. Среди основных достоинств замечены:

Итак в продолжении темы обслуживания баз 1С присмотримся к системе управления реляционными базами данных Microsoft SQL Server. Этот продукт предоставляет нам большие возможности обработки, хранения, резервирования и восстановления баз. Я начну небольшой цикл статей, посвященных этой теме. Все, что будет написано ниже, является личным мнением по данному вопросу и подлежит критике.

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.

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

  • Сервер Windows Server 2008 Enterprise: SRV-1C-TEST.
  • Microsoft SQL Server 2008: SRV-1C-TEST.
  • Тестовая база BuhFirma.

Проводить обслуживание базы в период 00:30 - 01:00, при этом обслуживание не должно быть заметным (либо слабозаметным) для пользователей базы.

  • Простая.
  • Полная.
  • С неполным протоколированием.
  • Полное.
  • Разностное.
  • Копирование журнала транзакций (логов).

При полном варианте копирования происходит сохранение базы mdf и журнала транзакций. Разностное копирование (по-другому дифференциальное) производит копирование данных, изменившихся с момента создания последней полной резервной копии. Копирование журнала транзакций соответственно производит сохранение только самого журнала транзакций.

При выборе простой модели восстановить базу данных можно с момента создания последней разностной или полной резервной копии. При выборе полной модели восстановления мы можем восстанавливать базу до минуты, создав полную резервную копию, например, ночью, и в течение дня создавать копии журнала транзакции. Ниже мы увидим, где всплывает этот момент. Хотелось так же привести некоторые выдержки из MSDN: "Модель восстановления с неполным протоколированием предназначена исключительно как дополнение к модели полного восстановления. В общем случае модель восстановления с неполным протоколированием похожа на модель полного восстановления, за исключением того, что протоколирование большинства массовых операций в ней производится в минимальной степени".

Модель восстановления своей базы вы можете посмотреть, зайдя в свойства базы данных, например BuhFirma и перейдя на строку - Параметры.

1c-mssql-maintenance-001.jpg

Как выбрать модель восстановления? Надо лишь ответить на вопрос: смертельна ли потеря информации за время, прошедшее после полного резервного копирования? Если ответ да, тогда выбираем полную модель восстановления, если нет, простую. Модель с неполным протоколированием стоит применять только на время массовых операций в БД.

Таким образом, если вы выбрали простую модель, то восстановить данные вы сможете только на момент ночного полного или разностного копирования, а всю информацию после этого пользователи будут восстанавливать вручную. Выбирая Полную модель, вы обязательно должны делать резервное копирование журнала транзакций, иначе логи будут сильно расти. При любой модели восстановления вы всегда должны иметь полную резервную копию.

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

  • Проверка целостности базы
  • Перестроение индекса
  • Обновление статистики
  • Очистка процедурного кэша СУБД
  • Резервное копирование базы данных
  • Очистка после обслуживания
  • Очистка журнала

Для этого подключимся к MSSQL серверу с помощью среды Microsoft SQLServer Management Studio. Запустить среду можно перейдя в Пуск - Все программы - Microsoft SQL Server 2008.

Подключимся с серверу SQL и перейдем в Управление - Планы Обслуживания. Кликнем правой кнопкой по Планы обслуживания и выберем Создать план обслуживания. Дадим ему имя: SRV1CTEST.

1c-mssql-maintenance-002.jpg

Перед нами окно SRV1CTEST, в котором мы и будем создавать последовательность действий, обозначенных раннее. Сразу видим появившейся Вложенный_План1. Справа от названия вложенного плана вы увидите иконку в виде таблички. Нажимаем на нее и попадаем в свойства расписания задания. Здесь можно менять название вложенного плана, выставить частоту повторения в Ежедневно и установить время. И так теперь осталось наполнить наш план заданиями. Для этого с Панели инструментов, которая находится справой стороны, перетаскиваем задания.

1c-mssql-maintenance-003.jpg

После того, как вы перетащили задание, щелкните по нему два раза. Откроется окно, в котором в строке Базы данных мы выбираем созданную нашу базу BuhFirma. Далее таким же образом добавляем задания Перестроение индекса и Обновление статистики, не забыв выбрать в них нужную базу данных.

Процедура Перестроение индекса пересоздает индекс с новым коэффициентом заполнения. За счет этого мы увеличиваем производительность работы в БД.

Задача Обновление статистики обновляет сведения о данных таблиц для MS SQL. Что тоже повышает производительность. Но после этой операции надо обязательно проводить очистку кэша.

Пока остановимся и поговорим о настройке связей между заданиями. Связи отражают последовательность выполнения. Что бы провести связь между заданиями надо нажать один раз на задание и увидите появившуюся стрелку. Её надо перетащить на следующее задание. У связи может быть 3 цвета: синий, зеленый и красный, каждый из которых означает три типа срабатывания перехода: при простом завершении предыдущего задания - Завершение, в случае успешного завершения - Успех, а в случае возникновения ошибки при выполнение предыдущего задания - Ошибка. Все эти параметры вы можете увидеть, нажав правой кнопкой мыши на проведенную между заданиями стрелку. Таким образом, если нам надо, чтобы Перестроение индекса срабатывало только после успешного завершения задания Проверка целостности базы данных, мы должны связать их стрелкой. Нажав правой кнопкой мыши на стрелку, сменим ее режим на Успешно, как видим, ее цвет изменился на зеленый.

1c-mssql-maintenance-004.jpg

На данный момент мы имеем 3 созданных задания в нашем вложенном плане. Как вы могли заметить, задания Очистка процедурного кэша СУБД в панели элементов нету. Мы воспользуемся задачей Выполнение инструкции T-SQL. Перетащим ее в план, и щелкнем на ней два раза. Мы видим окно, в которое впишем следующее:

Нажмем ОК. Далее стоит добавить задание задачу Резервное копирование базы данных. Так же щелкнув на добавленном задании, увидим опции настройки задания.

1c-mssql-maintenance-005.jpg

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

Задача Очистка после обслуживания позволяет удалять устаревшие архивы. В нем мы можем установить место расположения архивов, а так же время, по истечению которого они будут удаляться.

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

1c-mssql-maintenance-006.jpg

Сохранив план обслуживания, надо удостовериться в том, что на нашем сервер запущен Агент SQL Server. Для этого перейдем в Пуск - Все программы - Microsoft SQL Server 2008 - Средства настройки - Диспетчер конфигурации SQL Server. Перейдя на строчку Службы SQLServer, проверим, что служба Агент SQLServer находится в состоянии Работает и режим запуска выставлен в Авто.

1c-mssql-maintenance-007.jpg

В конце хотелось бы сказать о том, что использование задачи Перестроение индекса можно заменить или совместить с задачей Реорганизация индекса. Реорганизация индекса представляет собой инструмент для дефрагментации индексов. Для того что бы просмотреть какие операции требуются индексу, необходимо просмотреть физическую статистику индекса. Для этого правой кнопкой мыши нажмите на базу данных, перейдите в Отчеты - Стандартные отчеты - Физическая статистика индекса.

Следить за состоянием выполняемых операций вы можете из Управление - Планы обслуживания. Для этого в свойствах плана SRV1CTEST выберите Просмотр журнала. Так же можно просмотреть журнал, который ведет Агент MS SQL по этому заданию. Для этого перейдите на строку Агент MS SQL и в свойствах задания SRV1CTEST выберите Просмотр журнала.

1c-mssql-maintenance-009.jpg

  1. Обслуживание баз 1С в MS SQL Server. Часть 1. Настройка планов обслуживания БД.
  2. Обслуживание баз 1С в MS SQL Server. Часть 2. Оповещение по e-mail.
  3. Обслуживание баз 1С в MS SQL Server. Часть 3. Восстановление из резервных копий.

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.

Установка и настройка MS SQL Server для 1С:Предприятие

Тему установки MS SQL Server обычно обходят стороной. Действительно, трудно не установить эту СУБД, даже делая это в первый раз, столь же трудно не запустить в связке с ней Сервер 1С:Предприятия. Однако есть ряд неочевидных тонкостей, которые способны существенно отравить жизнь администратору, о чем мы сегодня и расскажем.

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.

MS SQL Server занимает первое место по количеству внедрений в связке с 1С:Предприятием, во многом это объясняется низким порогом вхождения, осилить данную связку вполне способен человек без опыта, сугубо по методу Next - Next - Finish. И, что самое интересное, все это будет работать. Скажем больше, в подавляющем большинстве случаев настройки SQL-сервера по умолчанию более чем достаточно для обеспечения производительной работы сервера 1С:Предприятия и трогать их не только не нужно, но даже вредно.

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

Прежде всего следует вспомнить про системную базу tempdb, которая активно используется 1С для хранения временных таблиц и промежуточных результатов. Причем она используется сразу всеми базами 1С, работающими на сервере. А так как по умолчанию она располагается в папке установки SQL-сервера, т.е. на системном диске, то при увеличении нагрузки именно tempdb становится бутылочным горлышком для всего сервера. Очень часто это приводит к ситуациям: купили быстрые HDD / SSD, дисковых ресурсов хватает, а 1С тормозит, что способно вызвать у начинающих администраторов серьезные затруднения.

Второй момент. Кодировка сравнения tempdb должна совпадать с кодировкой сравнения информационных баз, иначе это может в ряде случаев привести к неожиданным результатам, вплоть до серьезных ошибок в расчетах.

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

Подготовка к установке

Еще на стадии планирования следует уделить некоторое внимание дисковой подсистеме. Для хранения пользовательских баз данных и системной базы tempdb следует выделить отдельный раздел, а еще лучше дисковый массив из быстрых дисков или SSD. В нагруженных системах имеет смысл разнести базы данных и журналы транзакций по разным дисковым массивам. Также рекомендуется отформатировать эти разделы с размером кластера в 64 КБ.

1cv83-mssql-001.jpg

Установка MS SQL Server для работы с 1С:Предприятие

Как мы уже говорили, установка SQL-сервера предельно проста, и мы не будем описывать этот процесс подробно, обратив внимание лишь на необходимые настройки. Начнем с выбора компонентов, так как 1С не использует большинство механизмов SQL-сервера и если вы не собираетесь их использовать для иных целей, то оставляем только Службы ядра СУБД и Соединения с клиентскими средствами. В предыдущих версиях эти компоненты назывались Database Engine, Средства связи клиентских средств, также в них можно опционально установить Средства управления (однако лучше установить свежую версию средств управления отдельно).

1cv83-mssql-002.jpg

На закладке Учетные записи служб обязательно установите флаг Предоставить право на выполнение задач обслуживания тома службе ядра СУБД SQL Server.

1cv83-mssql-005.jpg

Затем следует проверить параметры сортировки, если у вас правильно настроены региональные настройки, то скорее всего там ничего изменять не придется, но проконтролировать данный параметр желательно, там должно быть Cyrillic_General_CI_AS.

1cv83-mssql-003.jpg

В Конфигурации сервера укажите Смешанный режим проверки подлинности и задайте пароль суперпользователю SQL - sa. Также укажите ниже администраторов данного экземпляра SQL-сервера, как минимум следует добавить текущего пользователя, но если администрировать данный экземпляр будут другие ваши коллеги, то имеет смысл сразу их указать.

1cv83-mssql-004.jpg

Следующая закладка - Каталоги данных - требует самого пристального внимания. Обязательно укажите в качестве места хранения пользовательских баз место на производительном массиве или отдельном диске. Несмотря на то, что расположение базы можно указывать при ее создании, задание правильных настроек по умолчанию избавляет вас от лишней работы, а также от ситуации, когда база создается средствами 1С и оказывается в каталоге по умолчанию, т.е. на системном диске. Также сразу можете указать каталог для хранения резервных копий.

1cv83-mssql-006.jpg

Современные версии MS SQL содержат отдельную закладку TempDB, для настройки одноименной базы, в предыдущих версиях данных настроек нет и о том, как настроить данную базу будет рассказано ниже. Здесь же мы выставляем для базы: количество файлов - 4, начальный размер - от 1 ГБ до 10 ГБ, авторасширение - 512 МБ, аналогичный размер и авторасширение устанавливается для файла журнала. Также не забываем проконтролировать размещение TempDB на отдельном разделе/диске.

1cv83-mssql-007.jpg

Остальные настройки можно оставить по умолчанию и завершить установку.

Для управления сервером СУБД следует скачать и установить SQL Server Management Studio (SSMS), ее можно установить как на сервер, так и на компьютер администратора, чтобы управлять с него всеми доступными SQL-серверами. Никаких особенностей в установке SSMS нет.

Настройка операционной системы

Если у вас имеется уже установленный экземпляр MS SQL, либо вы не выполнили всех рекомендаций по установке, то следует проверить ряд настроек операционной системы. Запустим редактор локальной политики безопасности secpol.msc и перейдем в раздел Локальные политики - Назначение прав пользователя. Откроем политику Выполнение задач по обслуживанию томов и убедимся, что в списке пользователей присутствует учетная запись от имени которой работает SQL Server - NT SERVICE\MSSQLSERVER.

1cv83-mssql-009.jpg

Если ваш экземпляр MS SQL Server установлен отдельно от Сервера 1С:Предприятие, то выполните аналогичную настроку для политики Блокировка страниц в памяти.

Настройка MS SQL Server для работы с 1С:Предприятие

Если вы имеете дело с уже установленным экземпляром SQL-сервера, убедитесь, что кодировка сравнения Cyrillic_General_CI_AS, для этого откройте Managment Studio, выберите необходимый экземпляр SQL-сервера и щелкнув на нем правой кнопкой мыши перейдите к Свойствам:

1cv83-mssql-010.jpg

В противном случае данные следует выгрузить средствами 1С, а сервер переустановить (или установить еще один экземпляр, если данный используется другими службами).

Затем перейдите к закладке Память, за основу для расчетов принимается объем выделенного SQL-серверу размера памяти (RAM). Обычно это объем памяти сервера за вычетом ОЗУ для ОС и иных служб, например, Сервера 1С:Предприятие. Для сервера с объемом ОЗУ в 32 ГБ мы будем исходить из доступного объема в 24 ГБ, выделив 8 ГБ для ОС и сервера 1С. Но данные соотношения не являются эталоном и в вашем случае это могут быть иные числа.

Для расчета минимального объема памяти применяется формула:

Для максимального применяется полный размер RAM, за вычетом 1 ГБ на каждые выделенные 16 ГБ ОЗУ (все объемы указываются в МБ):

1cv83-mssql-011.jpg

В разделе Параметры базы данных можно проконтролировать места хранения пользовательских баз и журналов, а также изменить их при необходимости. Все изменения будут применены только к вновь создаваемым базам данных, уже существующие БД потребуется перенести в новое расположение вручную (если в этом есть необходимость).

1cv83-mssql-012.jpg

В разделе Дополнительно - Параллелизм установите параметр:

1cv83-mssql-013.jpg

Следующая настройка будет связана с безопасностью. Для подключения 1С к серверу чаще всего используется учетная запись sa, что, мягко говоря, небезопасно, так как дает вошедшему под ней полный доступ к SQL-серверу. Учитывая, что администрированием баз 1С часто занимаются сторонние специалисты, то имеет смысл создать для них отдельную учетную запись.

Для этого раскройте Безопасность - Имена для входа и создайте новое имя (учетную запись), укажите проверку подлинности SQL-сервер и задайте пароль.

1cv83-mssql-014.jpg

Затем перейдите на закладку Роли сервера и разрешите dbcreator, processadmin и public.

1cv83-mssql-015.jpg

После чего используйте для подключения к SQL-серверу из 1С именно эту учетную запись.

Все создаваемые базы данных создаются на основе служебной базы model и к ним применяются все настройки этой БД, поэтому перейдем в Базы данных - Служебные базы данных и откроем свойства базы model. В разделе Файлы укажите значения начального размера базы от 1 ГБ до 10 ГБ, начальный размер журнала транзакций от 1 ГБ до 2 ГБ и авторасширение в 512 МБ. Выбирая начальный размер базы, нужно исходить из соображений чтобы размер файла превосходил загружаемый размер образа информационной базы 1С.

1cv83-mssql-016.jpg

В разделе Параметры укажите Модель восстановления в соответствии с применяемой политикой резервного копирования и установите параметр:

1cv83-mssql-017.jpg

Для уже существующих баз потребуется выполнить аналогичные настройки, за исключением параметра Начального размера, его следует выставить больше, чем текущий размер файлов базы и лога транзакций. Для базы данных желательно указать планируемый размер БД за длительный период эксплуатации, а для файла журнала размер, исключающий его авторасширение в процессе работы.

После внесения всех изменений в конфигурацию службу SQL сервера потребуется перезапустить.

Настройка сетевых протоколов

Для настройки сетевых протоколов откроем Диспетчер конфигурации SQL Server и перейдем в раздел Сетевая конфигурация SQL Server - Сетевые протоколы для MSSQLSERVER, где MSSQLSERVER - имя вашего экземпляра, и установим следующие настройки:

1cv83-mssql-018.jpg

  • Общая память (Shared Memory) - Включено
  • Именованные каналы (Named pipes) - Отключен
  • TCP/IP - Включено

Настройка базы tempdb

В предыдущих версиях MS SQL Server нет возможности настроить параметры базы tempdb при установке, также вы могли выполнить установку со значениями по умолчанию, либо вам достался уже установленный экземпляр, в этих случаях нужно произвести дополнительную настройку. Откроем Managment Studio и перейдем в Базы данных - Служебные базы данных в свойства базы tempdb. В разделе Файлы разобьем базу на четыре файла данных и установим для них начальный размер от 1ГБ до 10 ГБ, но не менее текущего размера файла, авторасширение - 512 МБ. Аналогичные настройки установим и для файла журнала.

1cv83-mssql-019.jpg

Перенос базы tempdb

Довольно часто встречаются ситуации, когда tempdb требуется перенести в другое место. Например, сервер был установлен с параметрами по умолчанию и tempdb находится на системном разделе, или вы приобрели SSD и хотите перенести туда не только базы, но и tempdb (что является правильным решением). Также при большой нагрузке на tempdb его рекомендуется выносить на отдельный диск.

Для того, чтобы изменить место расположения файла tempdb откройте Managment Studio, выберите Создать запрос и в открывшемся окне введите следующий текст, где E:\NEW_FOLDER - новое расположение для базы:

Данный запрос состоит из двух секций, верхняя переносит файл данных, нижняя - журнал транзакций. Если вы разделили базу на четыре файла данных, то следует изменить запрос, создав для каждого файла данных свою секцию.

Создав запрос нажмите Выполнить, после выполнения запроса перезапустите SQL-сервер, файлы базы и лога tempdb будут созданы в новом месте, файлы по старому расположению следует удалить вручную.

1cv83-mssql-020.jpg

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.

Настраиваем 1С Предприятие 7.7 для работы с SQL Server 2000

Одним из способов повысить быстродействие 1С Предприятия 7.7, особенно при работе с большими базами, является переход от файлового режима 1С к использованию SQL сервера. Несмотря на то, что оба продукта уже заканчивают свой жизненный цикл, данная тема остается довольно актуальной. В данной статье мы рассмотрим практическую настройку сервера для работы 1С Предприятия совместно с SQL Server 2000.

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.

Немного теории, или что нам дает SQL?

Перед тем как браться за реализацию проекта, необходимо усвоить базовый объем знаний и твердо знать ответы на следующие вопросы: в чем основное отличие файлового и SQL вариантов работы 1С Предприятия, от чего зависит быстродействие в обоих случаях и какие требования предъявляются к оборудованию и сети. Непонимание этих, в общем то простых, вещей приводит к тому, что переход на SQL версию 1С не приносит желаемых результатов или вообще, результат противоположный ожидаемому.

Рассмотрим работу 1С в режиме разделения файлов. Вся обработка информации производится на рабочей станции, сервер играет роль общего файлового хранилища. Основные требования к такому серверу: быстрый жесткий диск и отказоустойчивость дисковой системы (обычно реализуется RAID 1, реже RAID 10). Обычно такой "сервер" представляет из себя обычную бюджетную машину с RAID контроллером и гигабитным сетевым адаптером.

При выполнении операции (отчета, обработки и т.п.) часть базы или даже вся база закачивается по сети на рабочую станцию, где уже и выполняется вся необходимая обработка данных. От чего зависит быстродействие в данном случае? В первую очередь от мощности рабочей станции и пропускной способности сети, более мощная машина будет более быстро строить отчеты и выполнять проводки.

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

Наш практический опыт показывает: для небольших рабочих групп (5-10 пользователей) критический размер базы начинается от 200-300 Мб. Бороться с этим можно увеличением быстродействия сети и оптимизацией потоков трафика в организации или ежегодной (ежеквартальной) сверткой БД.

Однако свертка это не выход, для нормальной работы торгового предприятия необходимы данные как минимум за текущий год, да и данные прошлых периодов также бывают частенько нужны. Вложения в расширение пропускной способности сети себя как правило не окупают, размеры БД и объемы трафика в сети растут намного быстрее, особенно если руководство решит "немного" расшириться, на 1-2 рабочих места.

Теперь посмотрим как обстоят дела в SQL варианте. Вместо таблиц все данные хранятся в одной SQL базе данных. Теперь рабочая станция передает на сервер короткие запросы, которые полностью обрабатываются на стороне сервера и рабочей станции возвращается конечный результат запроса. Это позволяет снизить трафик в разы и во столько же раз повышает нагрузку на сервер. К быстродействию рабочих станций особых требований не предъявляется, также будет вполне достаточно обычной 100 Мб сети.

Хотя следует помнить, что 1С Предприятие 7.7 для SQL довольно неоптимально и не использует многие возможности SQL сервера, поэтому часть данных обрабатываются не сервером, а рабочей станцией и в случае работы с емкими отчетами и обработками быстродействие рабочей станции тоже будет играть не последнюю роль. Основная же нагрузка ложится на сервер.

Распространенная ошибка - использование в качестве SQL сервера того же железа, что использовалось в качестве файлового сервера. Можно с уверенностью сказать, что результат будет противоположен ожидаемому. Если сразу пять пользователей запустят формирование отчетов, все эти пять отчетов будут формироваться сервером, следовательно вычислительных ресурсов сервера должно хватать для одновременной обработки запросов сразу от всех пользователей. Объем оперативной памяти должен быть достаточным для того, чтобы в нем полностью помещались SQL базы, также базы желательно вынести на отдельный от системы и других данных жесткий диск (дисковый массив), чтобы избежать конкуренции за доступ к головкам жесткого диска.

В случае совмещения SQL сервера с сервером терминалов на одной физической машине следует удостовериться, что ее ресуров достаточно для одновременной обработки запросов SQL сервера и клиентских приложений 1С, а оперативной памяти достаточно как для SQL сервера, так и для пользовательских приложений. В любом случае желательно ограничится выносом в терминал только 1С, прочие приложения желательно оставить на рабочих станциях, либо разнести сервер терминалов и SQL сервер по отдельным машинам. Также нежелательно совмещать на одном SQL сервере несколько объемных 1С баз. Как показывает практика, бывает дешевле купить под вторую базу отдельный сервер, чем покупать мощный сервер сразу под все базы.

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

От теории к практике. Установка SQL сервера.

Установка MS SQL Server 2000 проста и незамысловата, однако уже на стадии установки необходимо указать несколько отличных от установки по умолчанию параметров, необходимых для нормальной работы 1С. Платформой для установки сервера будет Windows Server 2003 SP2. Если вы устанавливаете версию SQL сервера с пакетом обновления ниже чем SP3, то система выведет вам грозное предупреждение, что устанавливаемая версия несовместима с системой, которое можно смело проигнорировать, практика показала - все работает прекрасно.

Windows-Server-2003-Standard-Edition-(2)-2009-09-11-20-17-30.jpg

Далее, в процессе установке принимаем все значения по умолчанию пока не дойдем до экрана Services Accounts, здесь устанавливаем переключатель в положение Use the Local System account

Windows-Server-2003-Standard-Edition-(2)-2009-09-11-21-07-19.jpg

На следующем экране выбираем вариант Mixed Mode и вводим пароль для пользователя sa, от имени которого мы будем подключаться к БД.

Windows-Server-2003-Standard-Edition-(2)-2009-09-11-20-34-20.jpg

Остальные параметры оставляем по умолчанию. По завершению установки желательно обновить SQL сервер до последней версии, установив SP4 (скачать). Установка SP4 производится со значениями по умолчанию, кроме параметров соединения с сервером, здесь переводим переключатель в верхнее положение и вводим пароль для sa.

Windows-Server-2003-Standard-Edition-(2)-2009-09-11-22-33-41.jpg

Настройка 1С Предприятие

Теперь, когда SQL сервер установлен и готов к использованию необходимо настроить 1С Предприятие. Напомним, что для работы с SQL сервером необходима отдельная версия 1С для SQL. Для успешной работы с SQL сервером в базе 1С должен быть заведен хотя бы один пользователь. Далее загружаем целевую базу в конфигуратор и производим выгрузку данных через Администрирование - Выгрузить данные.

Windows-Server-2003-Standard-Edition-(2)-2009-09-11-20-45-42.jpg

После чего создаем заготовку будущей БД, для этого в отдельную папку копируем все папки из рабочей базы данных и все файлы кроме файлов конфигурации и таблиц (V7Plus, библиотеки для работы с торговым оборудованием и т.п.)

Windows-Server-2003-Standard-Edition-(2)-2009-09-11-20-47-57.jpg

Следующим шагом необходимо создать новую SQL базу для хранени наших данных. Для этого запускаем Enterprise Manager.

Windows-Server-2003-Standard-Edition-(2)-2009-09-11-20-49-43.jpg

На первой закладке открывшегося окна вводим имя создаваемой базы, вторая и третья закладка определяют пути хранения файла БД и файла лога транзакций. По умолчанию предполагается их хранение в папке установки SQL сервера, однако желательно хранить их в отдельной папке рядом с базой 1С (желательно на отдельном жестком диске или на отдельном разделе).

Windows-Server-2003-Standard-Edition-(2)-2009-09-11-20-50-46.jpg

Создав базу, подключаем папку с заготовкой в качестве базы 1С и загружаем Конфигуратор. На вопрос выбора формата хранения данных указываем MS SQL Server, в Конфигураторе выбираем Администрирование - Параметры базы данных SQL и заполняем поля.

Windows-Server-2003-Standard-Edition-(2)-2009-09-11-20-51-25.jpg

В качестве сервера указываем сетевое имя машины, его можно подсмотреть в SQL Server Service Manager, щелкнув на значке в трее рядом с часами. В поле База Данных вводим название базы, которое мы указали при ее создании в Enterprise Manager. Пользователь sa, ниже вводим его пароль.

Windows-Server-2003-Standard-Edition-(2)-2009-09-11-20-54-14.jpg

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

Дополнительные материалы:

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.

Настройки Microsoft SQL Server для работы с 1С:Предприятием

В данной статье приводится описание действий по настройке Microsoft SQL Server. Можно использовать как check-list для контроля.

Общие

Проверить, что установлен последний Service Pack и последний cumulative update.

Выровнять сектора дисков по границе 1024Кб и отформатировать с размером блока 64Кб (если нет иных рекомендаций от производителя).

Операционная система

Включить возможность «Database instant file initialization» для пользователя, от которого запущена служба Microsoft SQL Server


Проверить работу «Database instant file initialization».

Создать новую базу с размером файла данных 5 Гб, журнал транзакций - 1 Мб. Если база создалась моментально, то все работает корректно. Созданную базу - удалить.

Установить разрешение на «Lock pages in memory» (блокировку страниц в памяти) для пользователя, от которого запущена служба Microsoft SQL Server


Если сервер 1С:Предприятия установлен вместе с Microsoft SQL Server, то данную настройку производить не нужно.

Схема управления питанием – «Высокая производительность»


Проверить отсутствие сжатия файлов данных и файлов журналов.


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

Системы автоматического резервного копирования (например Symantec Backup Exec) не должны копировать файлы базы данных и журнала транзакций.

Настройки сервера (Server Properties)

Использование памяти.


Если сервер 1С:Предприятия установлен вместе с Microsoft SQL Server, то верхний порог памяти необходимо уменьшить на величину, достаточную для работы сервера 1С.

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


Файлы данных и файлы журналов транзакций желательно размещать на разных дисковых массивах. При этом, требование к скорости дисковой подсистемы файла журнала транзакций, выше чем у файла данных. Cогласно рекомендации от Microsoft время отклика «диска» с файлами базы данных должно составлять 10-20 миллисекунд, а «диска» с файлами журнала транзакций 1-5 мс.

Установить параметр «Max degree of parallelism» = 1


Включить аутентификацию SQL Server.


Создать логины для каждой рабочей базы


Назначить логинам роли: public, dbcreator


Включить возможность административного подключения

Параметры базы данных

model

Новая база данных создается из копии базы model. Все настройки, указанные в model, будут в новой базе данных.


Начальный размер файла данных - от 1Гб до 10Гб.

Начальный размер журнала транзакций - от 1Гб до 2Гб.

Прирост файлов – 512Мб.


Установить модель восстановления, в зависимости от политики резервного копирования. Установить параметр «Auto update statistics asynchronously» = True


tempdb


Начальный размер файла данных:

  • если tempdb расположена на отдельном массиве (диске), то начальный размер файла данных (Initial size) установить равным (50% всего объема / Кол-во файлов).
  • если tempdb расположен вместе с рабочими базами данных, то начальный размер установить от 1Гб до 10Гб.

Прирост файлов – 512Мб

Рабочая база

Параметры рабочей базы аналогичны параметрам базы model, за исключением начального размера файлов (Initial Size).

Начальный размер файла данных стоит указывать равным ожидаемому размеру базы за длительный период эксплуатации.

Размер файла журнала транзакций следует указывать таким, чтобы исключить его расширение (auto grow). Т.е. указанного размера файла журнала должно хватать на весь период работы между операциями «BACKUP LOG».

Флаги трассировки


Настройка сетевых протоколов

Если сервер 1С:Предприятия расположен вместе с Microsoft SQL Server - включить протокол Shared Memory.

Протокол "Named pipes" необходимо отключить.


Обслуживание баз

Создать database mail account

Настроить операторов для оповещения об ошибках


В «планах обслуживания» при ошибках отправлять оповещение оператору


Настроить резервное копирование

Проверить восстановление базы

После того как был сделан первый автоматический бэкап, необходимо, на резервном сервере, восстановить базу данных и проверить ее работоспособность.

Читайте также: