• 怎样获得Sqlserver 2000得实例列表和运行在一个实例上得数据库列表(转)


    在.Net FrameWork中,能够很方便调用COM组件,有些时候我们需要获得运行在某个Sql Server上得服务实例列表和在一个实例上得数据库列表,通过Microsoft.SQLDMO.Object组件就可以轻松完成此项工作:
    首先如何找到Microsoft.SQLDMO.Object
    1.如何在您得项目中能够使用SQLDMO组件?
    菜单-项目-添加引用-COM-Microsoft.SQLDMO.Object

    2.将该功能写成一个类:


      1using System;
      2using System.Collections;
      3using System.Collections.Specialized;
      4
      5namespace JillZhang
      6{
      7    /**//// <summary>
      8    /// Summary description for SqlInfo.
      9    /// </summary>
     10    public class SqlInfo
     11    {
     12        成员变量#region 成员变量
     13        private string _uid="";
     14        private string _pwd="";
     15        private StringCollection _serverList=new StringCollection();
     16        private Hashtable _databaseList=new Hashtable();
     17        #endregion
     18
     19        构造函数#region 构造函数
     20        public SqlInfo()
     21        {
     22            this._serverList=GetSqlInstances();   
     23            if(this._serverList.Count>0)
     24            {
     25                foreach(string item in this._serverList)
     26                {
     27                    this._databaseList.Add(item,this.GetAllDatabases(item));
     28                }
     29            }
     30        }
     31        public SqlInfo(string uid,string pwd)
     32        {
     33            this._uid=uid;
     34            this._pwd=pwd;
     35            this._serverList=GetSqlInstances();   
     36            if(this._serverList.Count>0)
     37            {
     38                foreach(string item in this._serverList)
     39                {
     40                    this._databaseList.Add(item,this.GetAllDatabases(item));
     41                }
     42            }
     43        }
     44        #endregion
     45
     46        公共属性#region 公共属性
     47        /**//// <summary>
     48        /// 服务列表
     49        /// </summary>
     50        public StringCollection ServerList
     51        {
     52            get
     53            {
     54                return _serverList;
     55            }
     56        }
     57        /**//// <summary>
     58        /// 用于登录Sql server得用户名
     59        /// </summary>
     60        public string Uid
     61        {
     62            get
     63            {
     64                return _uid;
     65            }
     66            set
     67            {
     68                _uid=value;
     69            }
     70        }
     71        /**//// <summary>
     72        /// 用于登录得密码
     73        /// </summary>
     74        public string Pwd
     75        {
     76            get
     77            {
     78                return _pwd;
     79            }
     80            set
     81            {
     82                _pwd=value;
     83            }
     84        }
     85        #endregion
     86
     87        事件方法#region 事件方法
     88        /**//// <summary>
     89        /// 获得服务列表
     90        /// </summary>
     91        /// <returns></returns>
     92        public static System.Collections.Specialized.StringCollection GetSqlInstances()
     93        {
     94            //声明一个字符串链表,用于存放列表信息
     95            System.Collections.Specialized.StringCollection instaces= new System.Collections.Specialized.StringCollection();
     96            try
     97            {
     98                //以下代码是通过调用SQLDMO组件来实现获得服务列表
     99                SQLDMO.Application sqlApplication= new SQLDMO.ApplicationClass();
    100                SQLDMO.NameList sqlServerIntances=sqlApplication.ListAvailableSQLServers();
    101                for(int i=0;i<sqlServerIntances.Count;i++)
    102                {
    103                    object svr=sqlServerIntances.Item(i+1);//索引从1开始
    104                    if(svr!=null)
    105                    {
    106                        instaces.Add(svr.ToString());
    107                    }
    108                }
    109                return instaces;
    110            }
    111            catch
    112            {
    113                throw new Exception("未能获得Server得列表信息,请查看您得Sql server是否正在运行!");
    114            }
    115        }
    116
    117        /**//// <summary>
    118        /// 获得Sqlserver 2000一个Server Instance上得数据库列表
    119        /// </summary>
    120        /// <param name="server">服务名称</param>
    121        /// <param name="uid">登录用户</param>
    122        /// <param name="pwd">登录密码</param>
    123        /// <returns>数据库列表</returns>
    124        public static System.Collections.Specialized.StringCollection GetAllDatabases(string server,string uid,string pwd)
    125        {
    126            System.Collections.Specialized.StringCollection databases= new System.Collections.Specialized.StringCollection();
    127            try
    128            {
    129                SQLDMO.SQLServer sqlServer =new  SQLDMO.SQLServerClass();
    130                sqlServer.Connect(server,uid,pwd);
    131                foreach(SQLDMO.Database db in sqlServer.Databases)
    132                {
    133                    if(db.Name!=null)
    134                    {
    135                        databases.Add(db.Name);
    136                    }
    137                }
    138                return databases;
    139            }
    140            catch
    141            {
    142                throw new Exception("未能获得服务"+server+"上得数据库列表,可能您得服务器没有启动或者您得用户名或密码错误");
    143            }
    144        }
    145        public System.Collections.Specialized.StringCollection GetAllDatabases(string server)
    146        {
    147            return GetAllDatabases(server,this._uid,this._pwd);
    148        }
    149        #endregion
    150       
    151    }

  • 相关阅读:
    VSFTPD匿名用户上传文件
    shell随机数比较
    Verse For Santa ---- CodeForces
    计算机基础--整数加减运算
    Hello,Blog!
    题解 P2486 【[SDOI2011]染色】
    题解 P1047 【校门外的树】
    题解 P1339 【[USACO09OCT]热浪Heat Wave】——线段树做法
    题解 P1197 【[JSOI2008]星球大战】
    题解 P1886 【滑动窗口】
  • 原文地址:https://www.cnblogs.com/zhuor/p/398959.html
Copyright © 2020-2023  润新知