【问题标题】:How to get all connected Sql Servers in Visual Studio Sql Server Object Explorer如何在 Visual Studio Sql Server 对象资源管理器中获取所有连接的 Sql Server
【发布时间】:2017-03-31 09:12:05
【问题描述】:

我想开发一个 Visual Studio 扩展。

因此,我需要通过 Visual Studio Sql Server 对象资源管理器连接的所有数据库。 我想在我的程序执行期间连接到其中的一些。

我已经尝试通过

获取所有连接的数据库

System.Data.Sql.SqlDataSourceEnumerator.Instance.GetDataSources();

但结果不是正确的数据库集。

如果可以获取有关已连接数据库的所有信息,我的程序应该喜欢:

var databases = GetAllConnectedDatabases();
foreach (database in databases)
{
   database.Connect(); 
   // do something
}

是否有可能获得所有信息 我通过 Visual Studio Sql Server 对象资源管理器连接的 Sql-Servers?

感谢您的帮助。

【问题讨论】:

    标签: c# visual-studio visual-studio-extensions


    【解决方案1】:

    我们可以通过IVsDataExplorerConnectionManager Interface检索相关连接。这是一个简单的演示供您参考。

     IVsDataExplorerConnectionManager decMgr = (IVsDataExplorerConnectionManager)this.ServiceProvider.GetService(typeof(IVsDataExplorerConnectionManager));
    
     foreach (var conn in decMgr.Connections)
     {
          var state = conn.Value.Connection.State;
          if (state == DataConnectionState.Closed)
          {
              conn.Value.Connection.Open();
          }
     }
    

    【讨论】:

    • 谢谢。但是.. 我总是得到 0 个连接。
    • 请检查您的服务器资源管理器上是否有数据连接。
    • 我确保服务器/数据库已连接。但现在我得到一个构建错误“GetDeploymentPathFromVsixManifest”任务意外失败:(stackoverflow.com/questions/42985554/…) ... 还没有找到解决方案,所以我目前无法测试。但非常感谢您的意见。
    • 能够再次构建,IVsDataExplorerConnectionManager.Connections 中仍然有 0 个连接。我的数据库在 Server-Explorer 中列为已连接。
    • @ColeWu-MSFT 用户询问如何在“SQL Server 对象资源管理器”窗口中获取连接,而不是从“服务器资源管理器”窗口。有没有可能?我也需要答案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-26
    相关资源
    最近更新 更多