Изменение имени приложения при подключении к SQL Server - PullRequest
3 голосов
/ 17 декабря 2011

Можно ли изменить имя приложения, переданное на SQL Server (через строку соединения ADO), как только соединение будет открыто без закрытия и повторного открытия соединения?

В частности, я использую ADO, а неADO.NET и поставщик OLE DB SQLOLEDB.1.

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

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

Ответы [ 2 ]

2 голосов
/ 02 июля 2012

Я предлагаю использовать SQL CONTEXT_INFO, 128 байтов доступно для каждого соединения, которое можно изменить во время выполнения: http://msdn.microsoft.com/en-us/library/ms189252%28v=sql.105%29.aspx

1 голос
/ 19 декабря 2011

Я сомневаюсь, что вы можете изменить любой атрибут строки соединения после того, как соединение было создано (в пуле или нет). Соединения назначаются для пулов на основе значения самой строки подключения, поэтому, если вы могли бы изменить имя приложения после того, как соединение было выбрано из пула, оно по сути принадлежало бы другому пулу с этой точки on, что, вероятно, испортит внутреннее управление пулом соединений.

Кроме того, имя приложения используется как (я думаю, вы уже знаете, что, как вы сказали, вы пытаетесь использовать его из соображений производительности и устранения неполадок), для заполнения столбца program_name в sys.dm_exec_sessions. Поэтому, если не существует способа, которым это значение может измениться для соединения existig, я думаю, что и из ADO.NET этого не сделать.

Сказав это, я использую имя приложения для той же цели. Я просто «жестко закодировал» имя приложения к некоторой символической строке (например, «myapp-client»), и этого всегда было достаточно для определения точного вызывающего приложения на переполненном сервере (по крайней мере, вместе со столбцом host_process_id sys.dm_exec_sessions ).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...