В этой статье я расскажу о протоколе «Общая память» (Shared Memory) обмена данными в MS SQL Server 2012 (справедливо и для MS SQL Server 2008 (R2)). Данный протокол может использоваться при подключении к SQL-серверу клиента, установленного на том же компьютере, где и запущена служба SQL Server, и при использовании дает ощутимый прирост производительности за счет использования оперативной памяти для передачи данных, и как следствии, ликвидации накладных расходов при обмене данными между приложениями. В системе «1С:Предприятие» 8 начиная с версии 8.2.17 появилась поддержка протокола Shared Memory. По оценкам специалистов фирмы 1С, прирост производительности при использовании протокола «Общая память» (Shared Memory) должен составить от 10 до 15%. На примере совместной работы MS SQL Server 2012 с сервером 1С:Предприятие 8 и рассмотрим настройку данного протокола.
0. Оглавление
- Включение протокола «Общая память» (Shared Memory) в MS SQL Server
- Настройки строки подключения баз данных в системе «1С:Предприятия»
- Просмотр текущих подключений в MS SQL Server
- Соединение с помощью протокола «Именованные каналы» (Name pipe)
1. Включение протокола «Общая память» (Shared Memory) в MS SQL Server
Хоть протокол «Общая память» (Shared Memory) и включен по умолчанию, все же стоит убедиться что данный протокол работает и имеет наивысший приоритет над другими протоколами подключений к MS SQL Server. Для этого запустим оснастку «Диспетчер конфигурации SQL Server» (SQL Server Configuration Manager). В Microsoft Windows Server 2012 (R2) ее можно найти в списке всех программ.
В Microsoft Windows Server 2008 (R2) в меню «Пуск» (Start) — «Microsoft SQL Server 2012» — «Средства настройки» (Configuration Tools) — «Диспетчер конфигурации SQL Server» (SQL Server Configuration Manager)
В запустившейся оснастке раскроем вкладку «Сетевая конфигурация SQL Server» (SQL Server Network Configuration), затем выделим вкладку «Протоколы для <ИмяЭкземпляра>» (Protocols for …) (экземпляр по умолчанию называется MSSQLSERVER). В таблице справа увидим используемые для данного экземпляра протоколы. Убедимся, что протокол «Общая память» (Shared Memory) имеет состояние «Включено» (Enabled). В противном случае необходимо кликнуть по данной строке правой кнопкой мыши и в контекстном меню выбрать «Включить» (Enable), после чего перезапустить экземпляр SQL Server.
Далее убедимся что на закладках «Клиентские протоколы» (Client Protocols) настроек клиента «Native Client SQL версии 11.0 (32-разрядная версия)» (SQL Native Client 11.0 Configuration (32bit)) и «Native Client SQL версии 11.0» (SQL Native Client 11.0 Configuration) также включен протокол «Общая память» (Shared Memory), и он имеет порядок — «1», т. е. наивысший приоритет над другими протоколами. Если это не так, необходимо изменить настройки до данного состояния.
2. Настройки строки подключения баз данных в системе «1С:Предприятия»
Как уже говорилось ранее, сервер «1С:Предприятия» должен быть запущен на том же самом компьютере, где и запущенна служба MS SQL Server. Кроме того, формат строки подключения информационных баз к SQL серверу должен быть задан в виде <ИмяКомпьютера>\<ИмяЭкземпляра> или <ИмяКомпьютера> для экземпляра по умолчанию. Для того, чтобы проверить или изменить это значение необходимо запустить оснастку «Администрирование серверов 1С:Предприятия» (предварительно должна быть установлена). Далее в запустившейся оснастке раскрываем вкладки <ИмяСервера> — «Кластеры» — «Локальный кластер» — «Информационные базы» и вызываем свойства информационной базы выбрав соответствующий пункт контекстного меню.
В окне свойств информационной базы убедимся, что строка подключения к серверу баз данных задана в правильном формате или отредактируем ее, если это не так.
Затем запустим клиент «1С:Предприятие» для данной информационной базы, для инициализации соединения с указанным экземпляром SQL сервера.
3. Просмотр текущих подключений в MS SQL Server
Теперь просмотрим все активные подключения к MS SQL Server, а также протоколы используемые в каждом из подключений. Для этого запустим программу SQL Server Profiler. В Microsoft Windows Server 2012 (R2) ее можно найти в списке всех программ.
В Microsoft Windows Server 2008 (R2) в меню «Пуск» (Start) — «Microsoft SQL Server 2012» — «Средства обеспечения производительности» () — «SQL Server Profiler».
В запустившейся программе выберем в меню «Файл» (File) — «Создать трассировку…» (New Trace…).
В окне соединения с сервером введем имя текущего экземпляра SQL Server, данные для авторизации и нажмем «Соединить» (Connect).
Запуститься окно настройки свойств новой трассировки. Не меняя параметров, перейдем на вкладку «Выбор событий» (Events Selection), снимем отметку со всех событий кроме «ExistingConnection» и нажмем «Запустить» (Run).
Затем в активном окне трассировки увидим все подключения к данному экземпляру SQL Server. Среди них и соединение с именем 1CV83 Server, что соответствует подключению сервера «1С:Предприятия». В столбце TextData увидим используемый для подключения протокол. В данном случае надпись LPC (Local Prpcedure Call) означает использование протокола Shared Memory, что нам и в общем то и требуется.
Посмотреть активные соединения можно также выполнив запрос:
select program_name, net_transport
from sys.dm_exec_sessions as t1
left join sys.dm_exec_connections AS t2
ON t1.session_id=t2.session_id
where not t1.program_name is null
Для этого подключимся к текущему экземпляру SQL Server с помощью программы «SQL Server Management Studio». Далее, в окне программы кликнем правой кнопкой мыши в обозревателе объектов по строке с именем сервера и в контекстном меню выберем «Создать запрос» (New Query).
Вставляем текст запроса в появившейся справа окно и нажимаем кнопку «Выполнить» (Execute) на панели задач. После чего в окне «Результаты» (Results), расположенном ниже, увидим результат выполнения запроса, а именно все текущие соединения с данным экземпляром SQL Server. Среди них и соединение с именем 1CV83 Server и используемым протоколом Shared memory.
4. Соединение с помощью протокола «Именованные каналы» (Name pipe)
Для чистоты эксперимента попробуем подключиться к SQL Server с помощью какого-нибудь другого протокола, например с помощью протокола «Именованные каналы» (Name pipe). Для этого, соответственно, включим поддержку протокола именованных каналов для данного экземпляра SQL Server. Создадим псевдоним экземпляра, например, с именем TEST1. В настройках соединения информационной базы «1С:Предприятия» с сервером баз данных укажем имя только что созданного псевдонима и запустим клиент «1С:Предприятия» для данной информационной базы.
Запускаем заново трассировку и видим, что теперь приложение с именем 1CV83 Server использует протокол Name Pipes.
То же самое увидим выполнив запрос из предыдущего пункта.
Явное включение соединения сервера 1С с MS SQL — в строке, где сервер базы данных можно просто «lpc:имя_сервера». С другими протоколами также. Все есть в он-лайн доках по строке соединений.
Спасибо за Ваш комментарий. Не знал, что протокол можно указать явно в строке соединения.
Спасибо за статью, очень полезно.
Но в моем случае, Shared Memory заработало только когда в строчке «Имя сервера» прописал (local)
P.S. у меня Default Instance
Спасибо, но на версии 1С 8.3.6 заработало только после после изменения последнего значения на localhost
проклятые 1сники. шаред мем работал при 127,0,0,1. теперь локалхост ему подавай. ишь!