关于sqlserver查看当前活动服务器

filebat 2007-07-29 10:25:52
在登录"查询分析器"界面时,有一个button点击它,就可以列出所有"活动服务器"。
我的问题是,如果想通过C#来实现查看当前所有“活动服务器”的话,哪里有这方面的资料。

一个很笨的方法是:扫描局域网中所有电脑的1433端口。这样有三个问题:1)SQLSERVER的服务程序,可以通过TCP/IP, 命名管道(共享内存由于只能用于同一台机器,所以不考虑)两种。2)TCP/IP的监听端口,可能被配置成非1433端口。3)扫描网络中所有机器,效率太低
...全文
356 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
filebat 2007-07-29
  • 打赏
  • 举报
回复
我装的是vs2003,没找到SqlDataSourceEnumerator类,可能是vs2005里才有。

刚才在MSDN上查到用ODBC来实现的方法,网上有人写了一个demo。链接分别为:

http://www.aspxboy.com/private/5315/default.aspx
Enumerate SQL Server Instances in C#, Using ODBC

http://msdn2.microsoft.com/en-us/library/ms712446.aspx
SQL Server Browsing Example
zjcxc 2007-07-29
  • 打赏
  • 举报
回复
另外, 枚举依赖于 SQL Server 的配置, 如果 SQL Server 实例配置为不提供枚举所需要的信息(例如 sql 2000 设置了隐藏服务, sql 2005 关闭了 sql browser 服务)

则枚举是无效的(这个是安全的需要)
zjcxc 2007-07-29
  • 打赏
  • 举报
回复
C# 复制代码
=========================================================================

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("============================");
}
}
}

zjcxc 2007-07-29
  • 打赏
  • 举报
回复
以下控制台应用程序检索所有可见 SQL Server 实例的信息并在控制台窗口中显示该信息。

Visual Basic 复制代码:

==============================================================================
Imports System.Data.Sql

Module Module1
Sub Main()
' Retrieve the enumerator instance and then the data.
Dim instance As SqlDataSourceEnumerator = _
SqlDataSourceEnumerator.Instance
Dim table As System.Data.DataTable = instance.GetDataSources()

' Display the contents of the table.
DisplayData(table)

Console.WriteLine("Press any key to continue.")
Console.ReadKey()
End Sub

Private Sub DisplayData(ByVal table As DataTable)
For Each row As DataRow In table.Rows
For Each col As DataColumn In table.Columns
Console.WriteLine("{0} = {1}", col.ColumnName, row(col))
Next
Console.WriteLine("============================")
Next
End Sub
End Module

zjcxc 2007-07-29
  • 打赏
  • 举报
回复
如果你用 ADO.NET 2.0, 则 MSDN 上就有现成的功能
-----------------------------------------------------------------
SQL Server 2000 和 SQL Server 2005 均允许应用程序在当前的网络中查找 SQL Server 实例。SqlDataSourceEnumerator 类向应用程序开发人员公开此信息,提供包含所有可见服务器的信息的 DataTable。此返回的表包含网络上可用服务器实例的列表(该列表与用户尝试创建新连接时提供的列表匹配),并展开“连接属性”对话框上包含所有可用服务器的下拉列表。显示的结果并非总是完整的。

注意
与大多数 Windows 服务一样,最好使用尽可能少的权限运行 SQL 浏览器服务。有关 SQL 浏览器服务以及如何管理其行为的更多信息,请参见“SQL Server 联机图书”。

hb_gx 2007-07-29
  • 打赏
  • 举报
回复
扫描局域网中所有电脑的1433端口

-----------------------------------

貌似MS就是这样做的,我们局域网内有人的SqlServer改了端口点活动服务器就找不到了

这个效率是很低,你用查询分析器登陆的时候点那个查询活动服务器也是很慢的
青锋-SS 2007-07-29
  • 打赏
  • 举报
回复
俺也有这想法.
肥胖的柠檬 2007-07-29
  • 打赏
  • 举报
回复
http://topic.csdn.net/t/20011020/13/331531.html

肥胖的柠檬 2007-07-29
  • 打赏
  • 举报
回复
~不知道几楼了~
bqb 2007-07-29
  • 打赏
  • 举报
回复
1
内容概要:本文介绍了一种基于多目标粒子群算法(MOPSO)的微电网优化调度模型,综合考虑风能、光伏、储能系统、柴油发电机、燃气轮机以及与主电网之间的能量交互等多种分布式能源的协同运行。通过构建以运行成本最小化、碳排放最低化和系统可靠性最优化为目标的多目标优化模型,利用Matlab平台实现MOPSO算法求解,完成对微电网在不同运行场景下的能量管理与调度方案优化。该模型能够有效平衡经济性与环保性之间的关系,适用于含多类型分布式电源的复杂微电网系统,具有较强的工程应用价值和科研参考意义; 适合人群:具备一定电力系统基础知识和Matlab编程能力的研究生、科研人员及工程技术人员,尤其适合从事微电网、智能电网、综合能源系统、可再生能源集成与优化调度等领域研究的专业人士; 使用场景及目标:①用于多能源耦合微电网系统的协同优化调度研究;②支持多目标智能优化算法在能源系统中的建模与求解实践,帮助用户掌握MOPSO在实际工程问题中的应用方法;③为学术论文复现、毕业设计、科研项目开发提供完整的代码实例与技术支撑; 阅读建议:建议读者结合Matlab代码与理论文档,深入理解目标函数构建、约束条件处理及Pareto最优解集生成机制,重点关注算法参数设置、多目标权衡分析与结果可视化,并可通过调整能源配置或引入新约束进行二次开发与创新研究。

22,296

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧