如何在VS2022扩展中获取SQL Server Object Explorer的服务器与数据库列表
获取VS 2022中SQL Server Object Explorer的服务器/数据库列表
我正在编写VS 2022扩展,想要获取SQL Server Object Explorer中的服务器/数据库列表。该窗口由SQL Server Data Tools提供,并非Server Explorer窗口。
- 已知该功能可实现:我使用的一款商业扩展具备此能力,但它不开源,无法获知具体实现方式。
- 尚未找到相关公开API,怀疑该API是非公开的。
- 希望获取可从全局服务提供者中检索到的服务名称,以实现此访问;或是可编译的示例代码(下方代码无法编译)。
- 若有人知晓VS会话间该信息的存储位置,即便没有公开API也会有所帮助!(十年前的相关问题给出的信息现已失效,我已核实)
我找到一段示例代码,但无法编译,且不清楚它为何能编译——因为IVsDataExplorerConnectionManager并没有名为Root的属性(且由于仅能有扩展方法,无法有扩展属性,因此并非缺少项目程序集的问题!)
var connectionManager = serviceProvider.GetService(typeof(IVsDataExplorerConnectionManager)) as IVsDataExplorerConnectionManager; if (connectionManager == null) { Debug.WriteLine("Connection manager not found."); return; } // Get the root node of the SQL Server Object Explorer var rootNode = connectionManager.Root; if (rootNode == null) { Debug.WriteLine("Root node not found."); return; } // Find the SQL Server node var sqlServerNode = rootNode.Children .OfType<IVsDataExplorerNode>() .FirstOrDefault(node => node.DisplayName.Equals("SQL Server", StringComparison.OrdinalIgnoreCase));
我当然做过调研。八年前有人在此提出过相同问题,但未得到有用答案——给出的回答默认询问的是Server Explorer,但实际并非如此(当时已指出这一点)。
内容的提问来源于stack exchange,提问作者Ann L.
相关产品推荐
相关产品推荐

