我正在尝试创建一个SSMS加载项。我想要做的事情之一是创建一个新的查询窗口并以编程方式将其连接到服务器实例(在SQL登录的上下文中)。我可以很好地创建新的查询脚本窗口,但是我没有先手动连接到其他的东西(比如对象浏览器),我找不到如何连接它。如何连接一个新的查询脚本与SSMS加载项?
因此,换句话说,如果我Obect资源管理器连接到SQL实例手动,然后执行我的方法加载项,创建查询窗口,我用这个代码可以把它连接:
ServiceCache.ScriptFactory.CreateNewBlankScript(
Editors.ScriptType.Sql,
ServiceCache.ScriptFactory.CurrentlyActiveWndConnectionInfo.UIConnectionInfo,
null);
但我不想依赖CurrentlyActiveWndConnectionInfo.UIConnectionInfo进行连接。我想以编程方式设置SQL登录用户名和密码。
有没有人有任何想法?
编辑:
我已经设法获得通过的最后一个参数设置为System.Data.SqlClient.SqlConnection的实例连接的查询窗口。但是,连接使用最后一次登录的上下文,而不是以编程方式设置。也就是说,它所连接的用户就是您在连接对话框中选择的用户,当您单击“新建查询”按钮并且没有连接对象资源管理器时,您将获得该用户。
EDIT2:
我写(或希望写)的插件时对我们的生产服务器上运行自动发送SQL语句和执行结果,以我们的情况跟踪系统。我想过的一个想法是删除写入权限并通过此加载项分配登录名,这也将强制用户输入案例#如果该语句不存在,则取消该语句。我刚才的另一个想法是检查ServiceCache.ScriptFactory.CurrentlyActiveWndConnectionInfo.UIConnectionInfo中的服务器名称,并将其与我们的生产服务器列表进行比较。如果匹配并且没有大小写#则取消查询。
你想创建自己的连接到对话框? – 2009-06-19 15:20:56
是的,基本上。用户不会自己输入登录信息。它将从持久存储中检索,而我已经在使用这个存储。 – squillman 2009-06-19 16:06:10