Я пытаюсь создать надстройку SSMS. Одна из вещей, которые я хочу сделать, это создать новое окно запроса и программно подключить его к экземпляру сервера (в контексте входа в SQL). Я могу создать новое окно сценария запроса, но я не могу найти, как подключить его без предварительного подключения вручную к чему-то другому (например, к обозревателю объектов).
Другими словами, если я вручную подключаю Object Explorer к экземпляру SQL, а затем выполняю метод моей надстройки, который создает окно запроса, я могу подключить его, используя этот код:
ServiceCache.ScriptFactory.CreateNewBlankScript(
Editors.ScriptType.Sql,
ServiceCache.ScriptFactory.CurrentlyActiveWndConnectionInfo.UIConnectionInfo,
null);
Но я не хочу полагаться на CurrentActiveWndConnectionInfo.UIConnectionInfo для подключения. Я хочу программно установить имя пользователя и пароль для входа в SQL.
У кого-нибудь есть какие-либо идеи?
ИЗМЕНИТЬ:
Мне удалось подключить окно запроса, установив последний параметр для экземпляра System.Data.SqlClient.SqlConnection. Однако соединение использует контекст последнего входа в систему, который был подключен, а не то, что я пытаюсь установить программно. То есть пользователь, к которому он подключается, выбран в диалоговом окне подключения, которое вы получаете, когда нажимаете кнопку «Новый запрос» и не имеете подключенного обозревателя объектов.
EDIT2:
Я пишу (или надеюсь написать) надстройку для автоматической отправки оператора SQL и результатов выполнения в нашу систему отслеживания дел при запуске на наших производственных серверах. Одной из моих мыслей было удалить права на запись и назначить логины через эту надстройку, что также заставит пользователя вводить case #, отменяя оператор, если его там нет. Еще одна мысль, которая только что пришла мне в голову, — проверить имя сервера в ServiceCache.ScriptFactory.CurrentlyActiveWndConnectionInfo.UIConnectionInfo и сравнить его с нашим списком рабочих серверов. Если он совпадает и случая нет #, отмените запрос.