注册 | 登录
收藏 | 帮助
热门文章
编辑推荐
相关文章  
如何根据名称识别计算机病毒
教你如何防止脚本病毒执行的通用
在网吧如何防止病毒和快速杀毒
如何判断电脑是否感染了病毒
特络伊木马如何利用文件关联和设
深入揭秘木马是如何盗取QQ密码的
如何知道你的电脑是否含有病毒
杀毒软件如何被XP SP2的安全中心
教你如何手工剿灭QQ广告弹出的木
木马是如何编写的(一)
您现在的位置: 顶尖设计 >> IT学院 >> 数据库 >> MS SQL >> 文章正文
如何获取局域网中的所有 SQL Server 服务器
作者:佚名  来源:不详  点击:  更新:2006-12-20
简介:

如何获取局域网中的所有 SQL Server 服务器

文献参考来源:Delphi 深度探索

我一直想在我的应用程序中获得关于 SQL Server 更详细的信息。直到最近利用 SQLDMO(SQL Distributed Management Objects) 才得以实现这个想法。SQLDMO 提供了非常强大的功能,我们几乎可以利用程序实现任何 SQL Server 拥有的功能。在这篇文章中我将向您展示如何得到局域网中所有 SQL Servers 服务器、如何连接、如何获得服务器中的所有数据库。

SQLDMO 对像来自 SQL Server 2000 提供的动态连接库 SQLDMO.dll。  这个 dll 本身是一个 COM 对像,首先你必须从类型库中引用Microsoft SQLDMO Object Library (Version 8.0). Delphi 会自动为你生成SQLDMO_TLB.PAS文件,文件中包括了所有 COM 对象的接口。

 

 

在这里我们需要注意,由于引入的SQLDMO “TDatabase”和 “TApplication”和其它几个缺省类名与 Delphi 自带的类名冲突,所以自己可以修改成 _TypeName 的形式。或者其它的名字,我在这里改成 T_Application 、T_Database 等。

我们下一步要做的是在我们的程序中引入单元文件 SQLDMO_TLB.PAS 。 应用程序单元名称是 SqlServers

程序运行界面如下:

 

服务器列表中是局域网中所有的 SQL SERVER 服务器,选择服务器后输入用户名和密码,下拉数据库列表,程序会列出此服务器中的所有数据库.

程序源代码如下:

unit SqlServers;

interface

uses

  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

  StdCtrls, Buttons, ComCtrls , SQLDMO_TLB;//注意别忘了引入此文件

type

  TdmoObject = record

    SQL_DMO    : _SQLServer;

    lConnected : boolean;

  end;

 

type

  TFormServersList = class(TForm)

    Label1: TLabel;

    Label2: TLabel;

    CB_ServerNames: TComboBox;

    CB_DataNames: TComboBox;

    Label3: TLabel;

    Label4: TLabel;

    Ed_Login: TEdit;

    Ed_Pwd: TEdit;

    BitBtn1: TBitBtn;

    BitBtn2: TBitBtn;

    procedure FormCreate(Sender: TObject);

    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);

    procedure FormClose(Sender: TObject; var Action: TCloseAction);

    procedure FormShow(Sender: TObject);

    procedure BitBtn2Click(Sender: TObject);

    procedure CB_DataNamesDropDown(Sender: TObject);

  private

    server_Names : TStringList;

    //对象集合  

    PdmoObject : array of TdmoObject;

    //获取所有的远程服务器

    Function GetAllServers(ServerList : TStringList) : Boolean;

    { Private declarations }

  public

    { Public declarations }

  end;

 

var

  FormServersList: TFormServersList;

implementation

 

{$R *.DFM}

 

{ TForm1 }

 

Function TFormServersList.GetAllServers(ServerList : TStringList) : Boolean;

var

  sApp : _Application ;

  sName : NameList;

  iPos : integer;

begin

  Result := True ;

  try

    sApp := CoApplication_.Create ; //创建的对象不用释放,delphi 自己会释放

    sName := sApp.ListAvailableSQLServers;

  except

[1] [2] 下一页




  • 上一篇文章:
  • 下一篇文章:
  • 分享此文:该页面添加到 Mister Wong 添加到雅虎Yahoo!收藏 Add to:Del.icio.us Post to Furl Digg this 添加到Google书签 reddit spurl blogmarks 365Key 评论  收藏  分享  打印
     我来说两句
    姓名:       验证码:   
    主页: 
    评分: 1分 2分 3分 4分 5分
    本频道近期热评文章:
      关于我们 | 联系我们 | 站点地图 | 广告投放 | 友情链接 | 在线留言 | 版权申明
    版权所有 © 2004-2007 顶尖设计(bobd.cn)
    未经授权禁止转载,摘编,复制本站内容或建立镜像. 沪ICP备07504942号 
    网络110
    报警服务