Использование протокола Shared Memory в MS SQL Server 2012 /2008 на примере работы с сервером «1С:Предприятия» 8

logo_sql_2012В этой статье я расскажу о протоколе «Общая память» (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. Оглавление

  1. Включение протокола «Общая память» (Shared Memory) в MS SQL Server
  2. Настройки строки подключения баз данных в системе «1С:Предприятия»
  3. Просмотр текущих подключений в MS SQL Server
  4. Соединение с помощью протокола «Именованные каналы» (Name pipe)

1. Включение протокола «Общая память» (Shared Memory) в MS SQL Server

Хоть протокол «Общая память» (Shared Memory) и включен по умолчанию, все же стоит убедиться что данный протокол работает и имеет наивысший приоритет над другими протоколами подключений к MS SQL Server. Для этого запустим оснастку «Диспетчер конфигурации SQL Server» (SQL Server Configuration Manager). В Microsoft Windows Server 2012 (R2) ее можно найти в списке всех программ.

Firewall_Windows_MS_SQL_Server_2012_01

В Microsoft Windows Server 2008 (R2) в меню «Пуск» (Start) — «Microsoft SQL Server 2012» — «Средства настройки» (Configuration Tools) — «Диспетчер конфигурации SQL Server» (SQL Server Configuration Manager)

Firewall_Windows_MS_SQL_Server_2012_02

В запустившейся оснастке раскроем вкладку «Сетевая конфигурация SQL Server» (SQL Server Network Configuration), затем выделим вкладку «Протоколы для <ИмяЭкземпляра>» (Protocols for …) (экземпляр по умолчанию называется MSSQLSERVER). В таблице справа увидим используемые для данного экземпляра протоколы. Убедимся, что протокол «Общая память» (Shared Memory) имеет состояние «Включено» (Enabled). В противном случае необходимо кликнуть по данной строке правой кнопкой мыши и в контекстном меню выбрать «Включить» (Enable), после чего перезапустить экземпляр SQL Server.

shared-memory-1spredpriyatie-8-i-ms-sql-server_01

Далее убедимся что на закладках «Клиентские протоколы» (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», т. е. наивысший приоритет над другими протоколами. Если это не так, необходимо изменить настройки до данного состояния.

shared-memory-1spredpriyatie-8-i-ms-sql-server_02

2. Настройки строки подключения баз данных в системе «1С:Предприятия»

Как уже говорилось ранее, сервер «1С:Предприятия» должен быть запущен на том же самом компьютере, где и запущенна служба MS SQL Server. Кроме того, формат строки подключения информационных баз к SQL серверу должен быть задан в виде <ИмяКомпьютера>\<ИмяЭкземпляра> или <ИмяКомпьютера> для экземпляра по умолчанию. Для того, чтобы проверить или изменить это значение необходимо запустить оснастку «Администрирование серверов 1С:Предприятия» (предварительно должна быть установлена). Далее в запустившейся оснастке раскрываем вкладки <ИмяСервера> — «Кластеры» — «Локальный кластер» — «Информационные базы» и вызываем свойства информационной базы выбрав соответствующий пункт контекстного меню.

shared-memory-1spredpriyatie-8-i-ms-sql-server_03

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

shared-memory-1spredpriyatie-8-i-ms-sql-server_04

Затем запустим клиент «1С:Предприятие» для данной информационной базы, для инициализации соединения с указанным экземпляром SQL сервера.

3. Просмотр текущих подключений в MS SQL Server

Теперь просмотрим все активные подключения к MS SQL Server, а также протоколы используемые в каждом из подключений. Для этого запустим программу SQL Server Profiler. В Microsoft Windows Server 2012 (R2) ее можно найти в списке всех программ.

shared-memory-1spredpriyatie-8-i-ms-sql-server_07

В Microsoft Windows Server 2008 (R2) в меню «Пуск» (Start) — «Microsoft SQL Server 2012» — «Средства обеспечения производительности» () — «SQL Server Profiler».

shared-memory-1spredpriyatie-8-i-ms-sql-server_06

В запустившейся программе выберем в меню «Файл» (File) — «Создать трассировку…» (New Trace…).

shared-memory-1spredpriyatie-8-i-ms-sql-server_08

В окне соединения с сервером введем имя текущего экземпляра SQL Server, данные для авторизации и нажмем «Соединить» (Connect).

shared-memory-1spredpriyatie-8-i-ms-sql-server_09

Запуститься окно настройки свойств новой трассировки. Не меняя параметров, перейдем на вкладку «Выбор событий» (Events Selection), снимем отметку со всех событий кроме «ExistingConnection» и нажмем «Запустить» (Run).

shared-memory-1spredpriyatie-8-i-ms-sql-server_10

Затем в активном окне трассировки увидим все подключения к данному экземпляру SQL Server. Среди них и соединение с именем 1CV83 Server, что соответствует подключению сервера «1С:Предприятия». В столбце TextData увидим используемый для подключения протокол. В данном случае надпись LPC (Local Prpcedure Call) означает использование протокола Shared Memory, что нам и в общем то и требуется.

shared-memory-1spredpriyatie-8-i-ms-sql-server_11

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

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).

shared-memory-1spredpriyatie-8-i-ms-sql-server_12

Вставляем текст запроса в появившейся справа окно и нажимаем кнопку «Выполнить» (Execute) на панели задач. После чего в окне «Результаты» (Results), расположенном ниже, увидим результат выполнения запроса, а именно все текущие соединения с данным экземпляром SQL Server. Среди них и соединение с именем 1CV83 Server и используемым протоколом Shared memory.

shared-memory-1spredpriyatie-8-i-ms-sql-server_13

4. Соединение с помощью протокола «Именованные каналы» (Name pipe)

Для чистоты эксперимента попробуем подключиться к SQL Server с помощью какого-нибудь другого протокола, например с помощью протокола «Именованные каналы» (Name pipe). Для этого, соответственно, включим поддержку протокола именованных каналов для данного экземпляра SQL Server. Создадим псевдоним экземпляра, например, с именем TEST1. В настройках соединения информационной базы «1С:Предприятия» с сервером баз данных укажем имя только что созданного псевдонима и запустим клиент «1С:Предприятия» для данной информационной базы.

shared-memory-1spredpriyatie-8-i-ms-sql-server_14

Запускаем заново трассировку и видим, что теперь приложение с именем 1CV83 Server использует протокол Name Pipes.

shared-memory-1spredpriyatie-8-i-ms-sql-server_15

То же самое увидим выполнив запрос из предыдущего пункта.

shared-memory-1spredpriyatie-8-i-ms-sql-server_16

Помогла ли Вам данная статья?
Да, спасибо, все получилось.
Немного помогла.
Совсем не помогла.
Не то, что я искал(а).
Смотреть результаты
Запись опубликована в рубрике 1С 8, Microsoft SQL Server 2008, Microsoft SQL Server 2012 с метками , . Добавьте в закладки постоянную ссылку.


5 Responses to Использование протокола Shared Memory в MS SQL Server 2012 /2008 на примере работы с сервером «1С:Предприятия» 8

  1. nick говорит:

    Явное включение соединения сервера 1С с MS SQL — в строке, где сервер базы данных можно просто «lpc:имя_сервера». С другими протоколами также. Все есть в он-лайн доках по строке соединений.

    • Виталий Онянов говорит:

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

  2. Дмитрий говорит:

    Спасибо за статью, очень полезно.
    Но в моем случае, Shared Memory заработало только когда в строчке «Имя сервера» прописал (local)
    P.S. у меня Default Instance

  3. Алексей говорит:

    Спасибо, но на версии 1С 8.3.6 заработало только после после изменения последнего значения на localhost

  4. Андрей говорит:

    проклятые 1сники. шаред мем работал при 127,0,0,1. теперь локалхост ему подавай. ишь!

Добавить комментарий для Виталий Онянов Отменить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *