Протокол Shared Memory (разделяемая память) используется для ускорения взаимодействия между сервером 1С:Предприятия и сервером СУБД (чаще всего Microsoft SQL Server), если они Установлены на одном физическом или виртуальном сервере. Это позволяет избежать сетевых задержек, так как данные передаются напрямую через оперативную память, а не по сетевым протоколам (например, TCP/IP).
Для включения и проверки использования Shared Memory в связке 1С + MS SQL Server выполните следующие шаги:
1. Включение протокола Shared Memory на SQL Server
Запустите Диспетчер Конфигурации SQL Server (SQL Server Configuration Manager).
Его можно найти через меню "Пуск" (обычно в папке "Microsoft SQL Server <версия> -> Средства настройки").
Настройте клиентские протоколы:
В левой панели разверните "SQL Native Client Configuration" (или "SQL Native Client Configuration (32-bit)" в зависимости от вашей версии и разрядности). Выберите "Client Protocols" (Клиентские протоколы). В правой панели найдите протокол "Shared Memory" (Общая память). Убедитесь, что его статус "Enabled" (Включено). Если нет, кликните правой кнопкой мыши и выберите "Enable". Рекомендуется также проверить приоритет протоколов. Shared Memory должен быть выше TCP/IP, если вы хотите, чтобы он использовался по умолчанию при локальном подключении. Вы можете изменить порядок, перемещая протоколы вверх/вниз.
Настройте серверные протоколы:
В левой панели разверните "SQL Server Network Configuration" (Сетевая конфигурация SQL Server). Выберите "Protocols for <имя_экземпляра_sql_server> " (Протоколы для <имя_экземпляра_sql_server> ). Убедитесь, что протокол "Shared Memory" (Общая память) также "Enabled" (Включено).
Перезапустите службу SQL Server:
В Диспетчере конфигурации SQL Server в левой панели выберите "SQL Server Services" (Службы SQL Server). В правой панели найдите вашу службу SQL Server (обычно "SQL Server (<имя_экземпляра> )"). Кликните правой кнопкой мыши и выберите "Restart" (Перезапустить). Это важно для применения изменений.
2. Настройка 1С:Предприятия для использования Shared Memory
Для того чтобы 1С использовала Shared Memory, когда сервер 1С и SQL Server находятся на одной машине, в настройках информационной базы на сервере 1С:Предприятия (в консоли администрирования или при создании/изменении базы) в качестве имени сервера СУБД необходимо указать:
Localhost или Lpc:имя_вашего_SQL_сервера (например, lpc:SQLSERVER1) или Lpc:127.0.0.1
Использование localhost или lpc: явно указывает 1С на попытку использовать локальное соединение через Shared Memory.
Шаги в консоли администрирования сервера 1С:
Откройте "Консоль администрирования серверов 1С:Предприятия". Разверните "Кластеры" -> ваш кластер -> "Информационные базы". Выберите нужную информационную базу, кликните правой кнопкой мыши и выберите "Изменить". В поле "Сервер баз данных" (Database server) укажите localhost или lpc:имя_вашего_SQL_сервера. Нажмите "ОК".
3. Проверка использования Shared Memory
Существует несколько способов убедиться, что 1С действительно использует протокол Shared Memory:
A. С Помощью SQL Server Management Studio (SSMS):
Подключитесь к вашему SQL Server с помощью SSMS. Откройте новый запрос. Выполните следующий запрос:
SQL
SELECT
s. program_name,
c. net_transport
FROM
sys. dm_exec_sessions AS s
LEFT JOIN
sys. dm_exec_connections AS c ON s. session_id = c. session_id
WHERE
s. program_name LIKE ‘%1C%’ OR s. program_name LIKE ‘%v8%’
ORDER BY
s. program_name;
В результатах запроса в колонке net_transport для соединений от 1С (которые будут иметь program_name вида 1C:Enterprise — <…>) вы должны увидеть значение Shared Memory. Если видите TCP, значит протокол Shared Memory не используется.
B. С помощью SQL Server Profiler (для детального анализа):
Запустите SQL Server Profiler. Подключитесь к вашему SQL Server. Настройте трассировку:
На вкладке "Выбор событий" (Events Selection) включите флаги "Показать все столбцы" (Show all columns) и "Показать все события" (Show all events). Разверните класс событий "Sessions" и включите событие "ExistingConnection". Можно установить фильтр на имя приложения (ApplicationName в "Column Filters"), чтобы видеть только соединения от 1С (например, 1C:Enterprise%).
Запустите трассировку. Зайдите в базу 1С, чтобы установить соединение с СУБД. В окне Profiler вы увидите события. В строке для соединения 1С в столбце Network Protocol должно быть указано LPC (Local Procedure Call), что соответствует использованию Shared Memory.
Важные замечания:
Расположение серверов: Shared Memory работает только тогда, когда Сервер 1С:Предприятия и сервер SQL Server установлены на одной и той же машине. Если они находятся на разных серверах, то будут использоваться сетевые протоколы (TCP/IP или Named Pipes). Версии: Убедитесь, что используемая версия SQL Native Client (устанавливается вместе с SQL Server или как отдельный компонент) совместима с вашей версией 1С. В некоторых случаях для старых версий 1С и новых SQL Server требовался отдельный Native Client. Производительность: Использование Shared Memory может дать существенный прирост производительности, особенно на операциях с большим количеством мелких запросов к СУБД. Однако, если узким местом является не канал связи, а, например, дисковая подсистема или нехватка ОЗУ, то эффект может быть менее заметным. Named Pipes: Другой локальный протокол – Named Pipes (Именованные каналы). Он также работает без сетевых задержек, но Shared Memory обычно считается чуть более быстрым. Приоритет Shared Memory в конфигурации SQL Server обычно выше.
Следуя этим шагам, вы сможете включить и проверить использование Shared Memory для вашей системы 1С + SQL Server.