Телефон: +7 (861) 279-33-66
Контактная информация

Запуск и первоначальная настройка MS SQL Server для клиент-серверной версии "1С: Предприятие 8"

Запуск и первоначальная настройка MS SQL Server для клиент-серверной версии "1С: Предприятие 8"

Автор: Шевалдин Дмитрий

Нет сомнения, что связка MS SQL Server + сервер "1С: Предприятие 8" - в своей нише самая востребованная и часто применяемая связка. Для её качественной поддержки желательно понимание обоих продуктов. В то же время, на практике, специалист поддержки обычно либо специализируется на администрировании MS SQL Server и не ориентируется в особенностях сервера "1С: Предприятие 8", либо, наоборот, специализируется на администрировании сервера "1С: Предприятие 8" и не ориентируется в особенностях MS SQL Server.

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

Для облегчения восприятия информации приводятся случаи из практики, примечания и советы (выделены курсивом).

Трёхзвенная схема

Как, возможно, уже известно читателю, база данных в рассматриваемом случае имеет трёхзвенную архитектуру:

Звено 1: СУБД MS SQL Server. "Хранит" и обслуживает базу данных, в конечном счёте выполняет все виды операций с базой данных. Таким образом, производительность работы базы данных, скорость и параллельность чтения-записи данных – во многом определяются производительностью MS SQL Server.

Звено 2: Сервер "1С: Предприятие 8". Служит посредником во взаимодействии между клиентами (пользователями) и MS SQL Server. Все клиентские запросы направляются на сервер, который "переводит" их на язык запросов MS SQL Server, получает результаты выполнения этих запросов, отправляет результаты клиенту.

Есть лишь малая часть операций, которые выполняются на уровне сервера "1С: Предприятие 8", без обращения к MS SQL - это, в частности, отслеживание так называемых "управляемых блокировок", чтение-запись "параметров сеанса". Обращения к СУБД в таких случаях не требуется, так как эти операции производятся не с данными базы, а со вспомогательной информацией сервера.

Звено 3: Клиентская часть "1С: Предприятие 8". Обращается к серверу "1С: Предприятие 8", получает от него результаты (то есть, например, выборки данных), отвечает за пользовательский интерфейс.

"Хотел как лучше".

После переустановки сервера "1С: Предприятие 8" пользователи жалуются на резкое падение производительности. Специалист по внедрению ПП "1С: Предприятие", производивший переустановку – лишь удивляется – мол, хотел как лучше, система должна была начать работать быстрее... Анализ ситуации показал, что серверу "1С: предприятие 8" была выделено слишком много ресурсов: его процессы (см. пункт 3) rphost заняли 15.5 Гб из 16Гб оперативной памяти сервера, в результате для уступчивого MS SQL Server практически не осталось доступной оперативной памяти.

Как результат – постоянный "своп", ненужная нагрузка на дисковую подсистему, и крайне медленное выполнение операций с базой данных - вследствие того, что MS SQL Server не успевает обрабатывать запросы, поступающие от "разогнанного" сервера "1С: Предприятие 8".


Совместимость продуктов

Актуальные данные о версиях MS SQL Server, рекомендуемых к использованию в связке с "1С: Предприятие 8", следует выяснять по ссылке http://v8.1c.ru/requirements/.

На момент подготовки статьи разработчики фирмы "1С" рекомендуют следующие варианты:

    1. SQL Server 2008 R2.
    2. SQL Server 2008, требуется установка пакета обновлений 1 (SP1).
    3. SQL Server 2005, требуется установка пакета обновлений 3 (SP3).


Технически возможно, но не рекомендуется применение MS SQL Server 2000, для него требуется установка пакета обновлений 2 (SP2), и желательна установка пакета обновлений 4 (SP4).

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

Обратите внимание:

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


Установка клиент-серверной версии "1С: Предприятие 8"

"1C установил"

У одного из заказчиков установку "1С: Предприятия 8" произвёл системный администратор, не имеющий опыта в работе с "1С:Предприятием 8". И хотя, по его словам, он "установил 1С" - на пользовательских компьютерах отсутствовала клиентская часть, а на сервере - серверная. Разбор ситуации прояснил картину – в комплекте "1С: Предприятия 8" имелось 2 диска – установка платформы и установка шаблонов баз данных. Администратор не стал вникать в порядок установки – и установил шаблоны баз данных, а не исполняемые файлы, компоненты платформы.

Конечно же, это нетипичный пример исключительно невнимательного отношения к работе.


При установке "1С: Предприятия 8" следует учитывать, что отдельно устанавливаются:

    Платформа "1С: Предприятие 8" - исполняемое приложение, интегрированная среда разработки и эксплуатации баз данных. При его запуске выбирается один из двух режимов работы – "Предприятие" (пользовательская оболочка баз данных) либо "Конфигуратор" (интегрированная среда разработки). Более полное описание можно прочитать по ссылке http://v8.1c.ru/overview/Platform.htm .

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

    При установке платформы следует уделить внимание выбору компонент:





Компонента "1С: Предприятие" может не устанавливаться на сервере (серверах).

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

Обратите внимание:

64-битная версия платформы не содержит клиентской части. Поэтому при установке на сервер отдельно устанавливаются 64-битные серверные компоненты, и отдельно – 32-битные компоненты клиентского приложения.


Компонента "Сервер 1C: Предприятия" нужна для подключения к MS SQL Server - это сервер приложений, связующее звено между платформой на клиентских рабочих местах и MS SQL Server.

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

При установке "как сервис" эта компонента будет запускаться и выполняться от имени выбранного пользователя:



После загрузки компонента порождает несколько процессов, как то: "агент сервера", "менеджер кластера серверов", "рабочие процессы сервера".

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

Рабочими процессами сервера можно будет управлять (добавлять, удалять, ставить ограничение на использование ОЗУ, объявлять основным или резервным), если будет установлена компонента "Администрирование сервера 1С: Предприятия".



Обратите внимание:

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

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

"Уроборос"

После неудачной оптимизации настроек сервера "1С: Предприятие 8" пользователи просигнализировали о крайне медленной работе системы, а системный администратор отметил постоянную 100% загрузку процессора на сервере.

Анализ ситуации показал источник проблемы - при настройке было установлено слишком маленькое ограничение на использование оперативной памяти рабочими процессами.

А дело в том, что данное ограничение работает следующим образом:

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

Установленное ограничение было настолько маленьким (300Мб), что рабочий процесс не мог полностью обслужить даже одного интенсивно работающего пользователя - в результате менеджер кластера серверов непрерывно перезапускал рабочие процессы и переподключал пользователей. Как только создавался новый процесс и пользователи к нему подключались – лимит оперативной памяти почти мгновенно достигался и вызывал следующий перезапуск. На это и уходило 100% загрузки процессора.


Компонента "Сервер 1C: Предприятия" не нужна на клиентских рабочих местах, да и не сможет там запуститься, так как требует физического наличия ключа защиты.

В случае, если количество подключаемых пользователей невелико (менее 50) – сервер приложений обычно устанавливают на том же компьютере, где работает MS SQL Server.

Для систем с большим количество пользователей и/или большим объёмом информационных потоков рекомендуется раздельная установка, а также применение кластера серверов.

Компонента "Администрирование сервера 1С: Предприятия" может быть полезной и на клиентах – например, с её помощью можно увидеть список информационных баз, подключённых к заданному серверу "1С: Предприятия".

На самом сервере её настоятельно рекомендуется установить.

Доступ

Обратите внимание:

Для проверки того, что доступ обеспечен, недостаточно использования утилиты администрирования серверов 1C: Предприятия, и тем более недостаточно присутствия сервера в "Сетевом окружении"!

Необходимо на каждом клиенте выполнить вход в базу данных, установленную на сервере – только это даст 100% уверенность, что доступ обеспечен.


1. В зависимости от политик безопасности, для MS SQL Server применяется аутентификация по учетной записи Windows либо аутентификация по учётной записи MS SQL Server.



В последнем случае при создании базы данных "1С: Предприятия" система будет запрашивать логин и пароль учётной записи MS SQL Server (например, sa), в первом случае логин и пароль следует оставлять пустыми:



и тому пользователю системы, от имени которого запущен сервер 1С: Предприятия, необходимо дать права в MS SQL Server, а именно:

    полные права на базу данных, в которой располагается информационная база
    доступ к базе данных master (роль public)
    рекомендуется – права на создание базы данных, в противном случае каждую новую базу данных нужно будет сначала создавать средствами MS SQL Sever, а уже затем подключать к серверу 1С: Предприятия
    рекомендуется - право на удаление своей базы данных


Например, можно назначить рассматриваемому пользователю предопределённую роль processadmin или sysadmin.

Совет.

Если у всех пользователей одновременно пропал доступ к рабочей базе данных – нужно перепроверить права и роли пользователя в MS SQL Server, в том числе установленные для конкретной базы данных, то есть User mapping:




2. Сервер 1С: Предприятия обращается к MS SQL Server через механизм Microsoft Data Access, поэтому его компоненты должны быть установлены, а у пользователя сервера 1С: Предприятия (см. предыдущий пункт) должны быть права на их запуск.

3. Связь между клиентами и сервером поддерживается по протоколу TCP, поэтому необходимо, чтобы этот протокол поддерживался обеими сторонами. Возможны проблемы с сопоставлением имени сервера и его IP адреса, например, если используется одноранговая сеть. В таком случае следует записать соответствие в файле [С:\WINDOWS\] system32\drivers\etc\hosts .

Совет.

В случае, если сеть одноранговая – для обеспечения постоянного подключения к серверу создайте сетевой диск, который обращается к какой-либо из папок этого сервера.


4. В случае использования протокола Named Pipes, и если MS SQL Server и сервер 1С: Предприятия установлены на разных компьютерах – пользователь, от имени которого работает сервер 1С: Предприятия, должен быть зарегистрирован в списке пользователей компьютера, на котором запущен MS SQL Server.

5. В некоторых случаях может потребоваться дополнительная настройка брэндмауэра Windows, то есть добавление исключений.

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

7. Релиз платформы "1С: Предприятия 8" должен быть абсолютно одинаковым на клиенте и на сервере.

"Близнецы"

"У одного из заказчиков применялось два сервера баз данных, на каждом из которых располагалась одна рабочая база. Пользователи работали - каждый одновременно с обеими базами. Службы поддержки выполнила обновление платформы "1С: Предприятия 8" на серверах и клиентах…. И тут посыпались жалобы на невозможность подключения – то к одной, то к другой базе. Анализ ситуации показал – обновление на клиентах и серверах делали несколько человек, и устанавливающие специалисты не перепроверяли, что устанавливают один и тот же релиз. Поэтому на одном сервере был один релиз платформы, на втором – другой, на половине клиентов – первый из этих релизов, на другой половине – другой. Получилось, что каждый пользователь имеет доступ только к одной из баз данных.

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


Первоначальные настройки MS SQL Server и базы данных

“И так работает”

MS SQL Server отличается простотой начальной установки, поэтому не все администраторы озадачиваются его дополнительной настройкой – после выполнения установки по умолчанию база заработала, пользователи в неё вошли – работа выполнена. Такой подход почти всегда влечёт за собой возникновение проблем примерно через месяц или два – причём, конечно же, внезапно и в самый неудобный момент.

Например, в случае, если база предназначена для ведения учёта – перед сдачей налоговой отчётности зачастую возникает необходимость срочно пересчитать те или иные данные, причём пересчитать массово, скажем "все поступления основных средств с начала года". Причём – в течение рабочего дня, без остановки работы остальных пользователей базы данных.

И, конечно, именно в этот момент обнаружится, что база при таком пересчете "зависает", или "вылетает", или не даёт работать остальным пользователям.

Этот своего рода "закон Мэрфи" касается каждого из нижеперечисленных пунктов.


Перед началом использования MS SQL Server в качестве СУБД для "1С: Предприятие" рекомендуется:

1. Установить значение параметра max degree of parallelism равным 1.

То есть:

    зайти в MS SQL Management Studio
    после подсоединения к серверу войти в свойства сервера через контекстное меню, пункт Properties
    далее выбрать страницу Advanced и отредактировать параметр max degree of parallelism




В противном случае некоторые запросы, формируемые сервером 1С: Предприятия, могут вызвать ошибку "Intra-query parallelism caused your server command (process ID #XX) to deadlock. Rerun the query without intra-query parallelism by using the query hint option (maxdop 1)". После этой ошибки клиентская часть зачастую аварийно завершается.

Ошибка не будет проявляться стабильно, так как план запроса формируется по-разному в зависимости от накопленных статистик – она проявит себя на объёмных и сложных запросах, то есть в самый неудачный момент.

2. Создать План обслуживания (Maintance Plan), еженочно обрезающий (shrink) базу данных временных таблиц tempdb. Автоматически база временных таблиц сервером 1С: Предприятия очищается не всегда, а иногда, в результате неудачно написанного запроса, может быть сформирована и не очищена временная таблица размером, например, 50 Гб. Вследствие этого может закончиться место на диске, вследствие этого возможно аварийное завершение и клиентской, и серверной части, также присутствует небольшой риск нарушения целостности данных.

То есть нужно:

    зайти в MS SQL Management Studio
    после подсоединения к серверу раскрыть раздел "Maintance plans"
    создать новый (или дополнить имеющийся) План обслуживания,
    добавить в него пункт "Execute T-SQL Statement task" (так как в задании "Shrink database" нельзя выбрать базу tempdb) с кодом



1.USE [tempdb]
2.
3.GO
4.
5.DBCC SHRINKFILE (N'tempdev' , 0, TRUNCATEONLY)
6.
7.GO
8.
9.DBCC SHRINKFILE (N'templog' , 0, TRUNCATEONLY)
10.
11.GO

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

1.USE tempdb
2.
3.GO
4.
5.EXEC sp_helpfile
6.
7.GO



“Горшочек, не вари”

Самый часто встречающийся на практике способ переполнить tempdb и тем самым "уронить" сервер – это забыть указать условие при соединении таблиц.

А именно, допустим, у нас в базе есть две таблицы, размером по 20 тысяч записей каждая. Допустим, между их записями можно установить однозначное соответствие, и мы пишем запрос, создающий временную таблицу, которая содержит 20 тысяч записей с полями обеих исходных таблиц. Но если мы забудем указать условие соединения – каждая запись первой таблицы соединится с каждой записью второй! То есть получится результирующая таблица из 20’000* 20’000=400 млн. записей. И так далее.


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

Нужный путь для хранения файлов рабочей базы лучше задать при её создании, отредактировав колонку Path (Путь):



Для изменения физического расположения файлов базы временных таблиц используется команда ALTER DATABASE, то есть в MS SQL Management Studio нужно выполнить следующий скрипт (команда "New query")

1.USE master
2.
3.GO
4.
5.ALTER DATABASE tempdb
6.
7.MODIFY FILE (NAME = tempdev, FILENAME = 'Новый_Диск:\Новый_Каталог\tempdb.mdf')
8.
9.GO
10.
11.ALTER DATABASE tempdb
12.
13.MODIFY FILE (NAME = templog, FILENAME = 'Новый_Диск:\Новый_Каталог\templog.ldf')
14.
15.GO

4. Не следует затруднять "рост" рабочей базы данных и её лога – ограничения на размер быть не должно, свойство "Autogrowth" должно быть установлено в процентах, рекомендуемое значение 10%. В противном случае добавление данных в базу, восстановление из архива и другие операции могут выполняться неоправданно долго.

Для установки этого свойства нужно через контекстное меню зайти в свойства базы, выбрать раздел Files, открыть редактирование свойств файла:



5. Рекомендуется включить в MS SQL Server поддержку сетевого протокола TCP/IP и выключить все остальные, в противном случае совместная работа MS SQL Server и сервера 1С: Предприятия будет менее стабильной.



6. Там же - очистить раздел Alias, т.к. её установка приводит к ошибкам взаимодействия MS SQL Server и сервера 1С: Предприятия.

Перед началом эксплуатации базы данных рекомендуется:

1. При создании базы данных из "1С: Предприятия" установить "смещение дат" 2000, в противном попытка записи даты ранее 01.01.1753 (что возможно в силу человеческого фактора) - будет вызывать сбои в работе базы данных.

Внимание! Смещение дат нельзя будет поменять у существующей базы данных!



2. Установить Режим восстановления (Recovery model) в значение Простой (Simple), либо создать План обслуживания (Maintance Plan), который будет ежедневно создавать резервную копию (backup) базы данных и обрезать журнал транзакций (log-файл). В противном случае при некоторых операциях журнал транзакций (log-файл) будет очень быстро расти: например, при реструктуризации базы данных рост размера log-файла может в несколько раз превысить размер самой базы данных.



3. Создать План обслуживания (Maintance Plan), выполняющий следующие регламентные задания как минимум раз в неделю:

    Создание резервной копии (backup) базы данных.
    Обновление статистик базы данных и очистка процедурного кэша (следует отметить, что свойство autoupdate statistics не подразумевает очистку процедурного кэша).
    Очистка процедурного КЭШа – не входит в стандартные операции Планов обслуживания, этот шаг нужно определять как выполнение скрипта (Execute T-SQL Statement) со следующим содержимым:
    DBCC FREEPROCCACHE
    Реиндексация таблиц базы данных.




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



Заключение

Рассмотрены вопросы, которые чаще всего вызывают затруднения у системных администраторов и внедренцев "1С: Предприятие 8", в связи с совместным использованием MS SQL Server и клиент-серверной версии "1С: Предприятие 8".

Автор надеется, что достаточно последовательно и доступно осветил "обе стороны медали".

P.S. Чаще делайте бэкапы!

Источник: http://technet.microsoft.com/ru-ru/sqlserver/hh182405