Имя: Пароль:
1C
1С v8
Сервер приложений и MSSQL на одном физическом сервере
0 fisher
 
29.03.12
07:54
Как заставить сервер приложений работать с MSSQL через Shared Memory, а не через TCP/IP?
1 Живой Ископаемый
 
29.03.12
07:55
я могу ошибаться, но по-моему никак... но почитаю реплик.
2 fisher
 
29.03.12
07:56
Без ножа режешь...
3 Живой Ископаемый
 
29.03.12
07:59
ну, тыж понял почему - да? отключаешь в МС СКЛ ТСП/ИП и получаешь ошибку сервера 1С из модуля в названии которого есть про ТСП.
4 fisher
 
29.03.12
08:00
Вроде как по дефолту автоматом должен хватать shared memory, это ж вроде не от него зависит... В клиентских настройках (cliconfg) галка разрешения использования этого протокола стоит...
В 7.7 работало. В 8.1 вроде тоже. А тут спохватился на 8.2 недавно - а оно по TCP ломится... А у меня сейчас как раз проблема оптимизации в полный рост...
5 КМ155
 
29.03.12
08:00
(2) дорежу, ADODB тебе не нативный клиент сиквела
6 Живой Ископаемый
 
29.03.12
08:08
м... В общем не понятно, вроде только рекомендации:
====
Распределение SQL-сервера и сервера "1С:Предприятия" по компьютерам

SQL-сервер и сервер "1С:Предприятия 8" могут быть установлены как на одном компьютере, так и на разных компьютерах, в зависимости от предполагаемой загрузки (см. руководство: "1С:Предприятие 8. Клиент-сервер. Особенности установки и использования"). Сервер "1С:Предприятия 8" взаимодействует с SQL-сервером через специальный компонент доступа к данным - Microsoft OLE DB Provider for SQL Server, входящий в состав Microsoft Data Access (MDAC), который, в свою очередь, взаимодействует с SQL-сервером либо непосредственно, если SQL-сервер установлен на том же компьютере, что и сервер "1С:Предприятия", либо через некоторый протокол передачи данных, если SQL-сервер и сервер "1С:Предприятия" установлены на разных компьютерах.


Выбор протокола передачи данных между сервером "1С:Предприятия" и SQL-сервером

Если сервер "1С:Предприятия" и SQL-сервер установлены на разных компьютерах, то передача данных осуществляется посредством сетевого протокола. Установки сетевых протоколов на SQL-сервере и у компонентов доступа к данным должны быть согласованы между собой. Для установки сетевых протоколов на SQL-сервере можно воспользоваться утилитой SQL Server Network Utility. Ее загрузочный модуль обычно находится в файле "C:\Program Files\Microsoft SQL Server\80\Tools\Binn\svrnetcn.exe". Эта утилита отображает диалог, в котором на закладке General представлен список включенных и выключенных протоколов. Для надежной работы "1С:Предприятия 8" рекомендуется включить протокол TCP/IP (первой строкой) и Named Pipes (второй строкой) и выключить все остальные протоколы.

Компьютер, на котором установлен сервер "1С:Предприятия", является по отношению к SQL-серверу клиентом, и для определения его сетевых протоколов воспользуйтесь утилитой SQL Server Client Network Utility. Ее загрузочный модуль обычно находится в файле "C:\WINNT\system32\cliconfg.exe". Она отображает диалог, в котором на закладке General представлен список включенных и выключенных протоколов. Рекомендуется использовать протокол TCP/IP, поскольку это исключает дополнительные проблемы с настройкой системы безопасности Windows и обеспечивает наибольшую производительность системы. Остальные протоколы лучше выключить. Обратите внимание на закладку Alias. Упоминание на ней имени используемого "1С:Предприятием" SQL-сервера может изменить выбранный сетевой протокол и привести к неожиданным эффектам.
7 fisher
 
29.03.12
08:17
Можем попробовать зайти от обратного.
Предлагаю собрать статистику.
Посмотреть используемый сервером приложений протокол для доступа к MSSQL можно в системном представлении dm_exec_connections базы master в колонке net_transport.
Имя приложения для соединения можно увидеть в dm_exec_sessions
8 fisher
 
29.03.12
08:19
Вдруг у кого-то таки через Shared Memory работает...
9 dk
 
29.03.12
08:35
может со строкой подключения покопаться
например в 7-ке для подключения к SQL на нестандартный порт можно было прописать
имя_сервера tcp 5659
или как-то так, т.е. указать протокол и порт
может и для Shared Memory есть своя строка коннекта
10 fisher
 
29.03.12
10:30
Ыыыы. А локально взлетело.
На рабочем компе поднят MS SQL 2000 с сервером приложений.
Отрубил все протоколы (при этом честно был предупрежден, что по сети к нему хрен кто теперь достучится), рестартанул его и после этого сервер приложений его спокойно зацепил и работает без проблем.
Значит, дело не в 1С...
11 fisher
 
29.03.12
10:33
На рабочем компе XP стоит и сиквел 2000 девелопер едишн.
Сервак 2008 R2 энтерпрайз, сиквел 2008 R2 SP1
Какие будут мысли?
12 МихаилМ
 
29.03.12
10:49
(0)
напишите патч
13 fisher
 
29.03.12
10:51
(12) См. (10)
В другой конфигурации взлетело без патчей.
14 fisher
 
29.03.12
10:52
(12) А вообще совет напомнил анекдот про сову-стратега :)
15 krbIso
 
29.03.12
11:03
не понял в чем проблема то
нормально пашет через shared memory
16 fisher
 
29.03.12
11:09
(15) Во! А у меня нет...
Вот еще нарыл чего: http://www.1service.com.ua/clients/articles/administration_ua/serv2_ua.php
Здравая мысль там такая - на серваке убить все протоколы, на в настройках клиента TCP оставить. Так я еще не пробовал. Завтра с утра попробую на продакшн-сервере.
17 fisher
 
29.03.12
11:12
А вот вообще профильная ссылка от гуру: http://gilev.blogspot.com/2011/01/ms-sql-server-1-1.html
Завтра опробую.
18 krbIso
 
29.03.12
12:10
(16) ну логично если в configuration manager протоколы не настраивали, у Гилева да все описано как сделать
19 fisher
 
29.03.12
12:36
(18) В смысле, не настраивал? Всегда раньше локально подхватывало shared memory автоматом, если было разрешено его использование клиенту. А на сервере он всегда включен по дефолту. Первый раз вижу необходимость отключать на сервере все протоколы кроме shared memory, чтобы он все-таки подхватился.
20 эцп
 
29.03.12
15:28
21 fisher
 
29.03.12
15:31
(20) Не. Это я читал. Там по итогу в другом проблема была у чувака.
22 rs_trade
 
29.03.12
15:31
стоит все по дефолту. пашет на шаред мемори. 2008эр2
23 fisher
 
29.03.12
15:33
(22) Вот по-идее так и должно. А у мя почему-то не хочет :(
Бум пробовать принуждать :) Благо сервак только под 1С выделен.
24 fisher
 
30.03.12
07:55
Это какой-то пипец...
После отключения всех протоколов, кроме Shared Memory, сервер приложения умудрился подключиться ... по отключенному Named Pipes! Сиквел перезапускался ессно и не раз. Короче, бред какой-то...
Ну, будем посмотреть... Вдруг локально Named Pipes работает быстрее TCP/IP...
25 fisher
 
30.03.12
08:20
(22) Если смотреть как в (7), у тебя тоже Shared Memory показывает?
26 fisher
 
30.03.12
08:37
Вычитал в MSDN, что локально Named Pipe работает быстрее TCP/IP
"Local named pipes runs in kernel mode and is extremely fast."
А в медленных сетях TCP/IP может быть значительно эффективнее (в быстрых сетях - сопоставимо).
27 fisher
 
30.03.12
08:37
28 fisher
 
30.03.12
10:37
Но вопрос по Shared Memory остается открытым...
29 rs_trade
 
30.03.12
23:59
(25) так и смотрел
30 rs_trade
 
31.03.12
00:09
а я че то не понял. тебе какой скуль к shared memory принудить надо? 2000 или 2008?
31 shachneff
 
31.03.12
01:52
Все работает. В настройках и клиента и сервера отключаем все протоколы кроме Shared memory. В консоли кластера в свойствах базы вместо IP SQL Server пишем точку.
32 fisher
 
31.03.12
13:26
(30) 2008
33 fisher
 
31.03.12
13:31
(31) В консоли кластера чего? Сервера приложений 1С? Нету там никаких "IP SQL Server". Там вообще протокол нигде не выбирается.
34 fisher
 
31.03.12
13:35
Пока так и крутится на Named Pipes...
35 vogenut
 
31.03.12
13:38
Через Shared Memory работает только SQL Server 2000, остальные через TCP/IP. Курите BOL
36 fisher
 
31.03.12
15:05
(35) О как. Т.е. остальные протоколы Билли чисто для смеха прикрутил. Здается мне, что вы курили не BOL.
37 fisher
 
31.03.12
15:11
(35) А еще ты походу обозвал rs_trade'a гнусным лжецом.
38 vogenut
 
31.03.12
15:26
39 fisher
 
31.03.12
15:45
(38) Оооо! Дай я тебя расцелую! Уж не знаю, где ты там вычитал подтверждения своему бреду, но там черным по белому изложена моя проблема:
"Clients that use MDAC 2.8 or earlier cannot use shared memory protocol. If these clients try this, they are automatically switched to the named pipes protocol."
Именно это у меня и происходит. Просто надо MDAC обновить.
Спасибо, дорогой товарищЪ!
40 vogenut
 
31.03.12
15:50
(39)
> Спасибо, дорогой товарищЪ!
Всегда пожалуйста ))
> где ты там вычитал подтверждения своему бреду
Не знаю, что ты подразумеваешь под моим бредом, но я тебе говорил именно про MDAC
и SQL Server выше 2000
> Просто надо MDAC обновить.
Ню-ню, теперь осталось найти такой MDAC )))
41 КМ155
 
31.03.12
15:58
42 fisher
 
31.03.12
16:01
(40) Чорд. Перечитал внимательно. Краснею, беру свои слова назад и приношу извинения. Получается, даже локально надо ставить TCP/IP и не париться? Или какие выводы по итогу?
ЗЫ. Остается непонятным, как работает Shared Memory у (22)
43 КМ155
 
31.03.12
16:01
(41) упс, уже была
44 fisher
 
31.03.12
16:05
(40) У мя щаз переключается на Named Pipes точь в точь, как в статье описано. Но никаких ощутимых задержек по сравнению с TCP/IP не наблюдаю. Там же написано, что Nimed Pipes локально шуршит быстрее. Может, имеет смысл его и оставить?
45 vogenut
 
31.03.12
16:07
(42) Ставь локально TCP/IP и не парься. Все равно tcp через loopback локально работает, это гораздо шустрее чем обычно. Shared Memory просто ускоряет пропускную способность. В (22) может быть указана ОС а не версия сиквела. Может на ней свежий MDAC стоит или он на ней SQL Server 2000 гоняет.
46 vogenut
 
31.03.12
16:08
(44) Не знаю насчет named pipes, не пробовал.
47 fisher
 
31.03.12
16:17
Оставлю пока как есть, пожалуй... Судя по MSDN, это может давать задержку при установке соединения, а для сервера приложений 1С это несущественно. Зато в рамках установленного соединения работа гипотетически быстрее (хотя субъективно разницы никакой, т.е. она если и есть, то жалкие проценты).
Думаю, тема исчерпана и ветку можно закрывать.
Vogenut'у респект и извинения.
48 rs_trade
 
02.04.12
08:30
(35) что тогда показывает dm_exec_connections в колонке net_transport?
49 vogenut
 
02.04.12
09:19
(48) Тип соединения с сервером. Тока там есть как соединения платформы так и соединения Management Studio из которой наверняка этот запрос и делается ))
50 rs_trade
 
02.04.12
10:39
(49) ну да. шаред мемори только для служебных процессов показывает. с id от 51 до 55.
51 fisher
 
02.04.12
10:40
(50) Тьфу на тебя. Столько времени голову морочил. Речь то была о процессах сервера приложений.