回 帖 发 新 帖 刷新版面

主题:[转帖]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[i] = names.Item(i);
            }
            foreach (string str in serverList)
            {
                Console.WriteLine(str);
            }
            Console.ReadLine();
        }
    }
}

回复列表 (共3个回复)

沙发


(local)


可以运行成功。

板凳

但偶尔也会出现:

System.InvalidCastException: 无法将类型为“System.__ComObject”的 COM 对象强制转
换为接口类型“SQLDMO.NameList”。此操作失败的原因是对 IID 为“{10022406-E260-11C
F-AE68-00AA004A34D5}”的接口的 COM 组件调用 QueryInterface 因以下错误而失败: 不
支持此接口 (异常来自 HRESULT:0x80004002 (E_NOINTERFACE))。
   在 SQLDMO.ApplicationClass.ListAvailableSQLServers()
   在 AllSqlServer.Program.Main(String[] args) 位置 C:\Documents and Settings\Ad
ministrator\桌面\ConsoleApplication2\ConsoleApplication2\Program.cs:行号 19

3 楼

不好意思,我的分数为0。

我来回复

您尚未登录,请登录后再回复。点此登录或注册