C#列出局域网中可用SQL Server服务器

 SQLDMO(SQL Distributed Management Objects,SQL分布式管理对象)封装了Microsoft SQL Server数据库中的对象。SQLDMO是Microsoft SQL Server中企业管理器所使用的应用程序接口,所以它可以执行很多功能,其中当然也包括对数据库的备份和恢复。

SQLDMO由Microsoft SQL Server自带的SQLDMO.dll提供,由于SQLDMO.dll是一个COM对象,所以大家在用之前必须在.NET项目中添加对它的引用。 注意是添加COM引用,在列表中找到“Microsoft    SQLDMO Object Library(可能路径是:系统盘符:/Program Files/Microsoft SQL Server/80/Tools/Binn/sqldmo.dll)”,然后点确定即可添加引用。
下面是用C#语言书写的用于列举局域网中可用的Microsoft SQL Server的类:

using System;
using System.Collections.Generic;
using System.Text;

namespace AllSqlServer
{
      class Program
      {
          static void Main(string[] args)
          {
              SQLDMO.NameList names;
              SQLDMO.ApplicationClass ac = new SQLDMO.ApplicationClass();
              names = ac.ListAvailableSQLServers();
              string[] serverList = new string[names.Count];
              for (int i = 0; i < serverList.Length; i++)
              {
                  serverList = names.Item(i);
              }
              foreach (string str in serverList)
              {
                  Console.WriteLine(str);
              }
              Console.ReadLine();
          }
      }
}

以上展示了使用COM对象如何列出局域网中的 SQL Server服务器信息,后来还发现在.Net中有现成的类可用,而不需要使用不太熟悉的COM对象了,这样岂不是更好?下面我把代码展示给大家:
using System;
using System.Data.Sql;
using System.Text;

namespace AllSqlServer
{
      class Program
      {
          static void Main(string[] args)
          {
              //SQLDMO.NameList names;
              //SQLDMO.ApplicationClass ac = new SQLDMO.ApplicationClass();
              //names = ac.ListAvailableSQLServers();
              //string[] serverList = new string[names.Count];
              //for (int i = 0; i < serverList.Length; i++)
              //{
              //      serverList = names.Item(i);
              //}
              //foreach (string str in serverList)
              //{
              //      Console.WriteLine(str);
              //}

              SqlDataSourceEnumerator instance =SqlDataSourceEnumerator.Instance;
              System.Data.DataTable table = instance.GetDataSources();

              DisplayData(table);

              Console.ReadLine();
          }

          private static void DisplayData(System.Data.DataTable table)
          {
              foreach (System.Data.DataRow row in table.Rows)
              {
                  Console.WriteLine("服务器名 = {0}", row["ServerName"]);
                  Console.WriteLine("实例名 = {0}", row["InstanceName"]);
                  Console.WriteLine("是否集成验证 = {0}", row["IsClustered"]);//即Windows身份验证和SQL Server验证
                  Console.WriteLine("版本 = {0}", row["Version"]);//8.*是SQL 2000,9.*是SQL 2005
                  Console.WriteLine("============================");
              }
          }
      }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值