前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >利用SqlDataSourceEnumerator获取嵌入SQL主机

利用SqlDataSourceEnumerator获取嵌入SQL主机

作者头像
重生信息安全
发布2020-04-26 13:35:13
1.1K0
发布2020-04-26 13:35:13
举报
文章被收录于专栏:重生信息安全重生信息安全

前言

SqlDataSourceEnumerator类向应用程序开发人员公开此信息,提供包含所有可见服务器的信息的DataTable。此返回的表包含网络上可用的服务器实例的列表,该SQL Server允许应用程序在当前网络中查找SQL Server实例。列表与用户尝试创建新连接时提供的列表匹配,并展开包含连接属性上所有可用服务器的下拉列表。此类。显示的结果并非总是完整的。

SqlDataSourceEnumerator

命名空间:System.Data.Sql

程序集:System.Data.dll

提供了一种枚举举报本地网络内部的所有可用SQL Server实例的机制。

通过方法调用返回的表包含以下列,所有列均包含的字符串值:

列描述

服务器名称

服务器的名称。InstanceName服务器实例的名称。如果服务器作为实例运行,则为空白

。IsClustered指示服务器是否属于其中。

版本服务器的版本。例如:

-9.00(SQL Server 2005)

-10.0。xx(SQL Server 2008)

-10.50(SQL Server 2008 R2)

-11.0。xx(SQL Server 2012)

C#示例代码

.NET与PowerShell谁的兼容性和执行效率更好就不用我说了

代码语言:javascript
复制
using System.Data.Sql;  
  
class Program  
{  
  static void Main()  
  {  
    // Retrieve the enumerator instance and then the data.  
    SqlDataSourceEnumerator instance =  
      SqlDataSourceEnumerator.Instance;  
    System.Data.DataTable table = instance.GetDataSources();  
  
    // Display the contents of the table.  
    DisplayData(table);  
  
    Console.WriteLine("Press any key to continue.");  
    Console.ReadKey();  
  }  
  
  private static void DisplayData(System.Data.DataTable table)  
  {  
    foreach (System.Data.DataRow row in table.Rows)  
    {  
      foreach (System.Data.DataColumn col in table.Columns)  
      {  
        Console.WriteLine("{0} = {1}", col.ColumnName, row[col]);  
      }  
      Console.WriteLine("============================");  
    }  
  }  
}

PowerShell命令

系统未安装或重置PowerShell会失效,但也比比国人故意吹捧的PowerUPSQL好很多倍。

代码语言:javascript
复制
C:\Users\k8gege\Desktop>PowerShell -Command "[System.Data.Sql.SqlDataSourceEnumerator]::Instance.GetDataSources()"

ServerName          InstanceName        IsClustered         Version
----------          ------------        -----------         -------
K82003-77562E10
WIN-OLDM1T2H9M4

PowerUPSQL

此工具也是基于SqlDataSourceEnumerator实现的,兼容性较差,很多系统下运行各种报错。

代码语言:javascript
复制
PS C:\Users\k8gege\Desktop\PowerUpSQL-master> Get-SQLInstanceBroadcast -Verbose
详细信息: Attempting to identify SQL Server instances on the broadcast domain.
详细信息: 2 SQL Server instances were found.

ComputerName                        Instance                           IsClustered                        Version                           
------------                        --------                           -----------                        -------                           
K82003-77562E10                     K82003-77562E10                                                                                         
WIN-OLDM1T2H9M4                     WIN-OLDM1T2H9M4

Ladon EnumMssql

Ladon的EnumMssql模块不支持扫描,若内部网存在多个网段,可使用PortScan扫描探测。

Ladon与PowerUPSQL对比,Ladon支持任意Win系统,而PowerUPSQL就未必能用了

参考:

https://github.com/k8gege/Ladon https://docs.microsoft.com/zh-cn/dotnet/framework/data/adonet/sql/enumerating-instances-of-sql-server

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-04-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 重生信息安全 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • SqlDataSourceEnumerator
  • C#示例代码
  • PowerShell命令
  • PowerUPSQL
  • Ladon EnumMssql
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档