0

0

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

php中文网

php中文网

发布时间:2016-06-07 15:09:21

|

1588人浏览过

|

来源于php中文网

原创

如何获取局域网中的所有 SQL Server 服务 作者:佚名 我一直想在我的应用程序中获得关于 SQL Server 更详细的信息。直到最近利用 SQLDMO(SQL Distributed Management Objects) 才得以实现这个想法。SQLDMO 提供了非常强大的功能,我们几乎可以利用程序实现任

如何获取局域网中的所有 sql server 服务
 
作者:佚名  
我一直想在我的应用程序中获得关于 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

    Result := False;

    Exit;

  end;

  if sName.Count > 0 then // 之所以 iPos 从1开始,是因为0 位置为空值即 ' '

  for iPos := 1 to sName.Count - 1 do

  begin

    CB_ServerNames.Items.Add(sName.Item(iPos));

    ServerList.Add(sName.Item(iPos));

  end;

end;

 

procedure TFormServersList.FormCreate(Sender: TObject);

var

  lcv : integer;

begin

  server_Names := TStringList.Create;

易优cms汽车车辆租赁源码1.7.2
易优cms汽车车辆租赁源码1.7.2

由于疫情等原因大家都开始习惯了通过互联网上租车服务的信息多方面,且获取方式简便,不管是婚庆用车、旅游租车、还是短租等租车业务。越来越多租车企业都开始主动把租车业务推向给潜在需求客户,所以如何设计一个租车网站,以便在同行中脱颖而出就重要了,易优cms针对租车行业市场需求、目标客户、盈利模式等,进行策划、设计、制作,建设一个符合用户与搜索引擎需求的租车网站源码。 网站首页

下载

  if not GetAllServers(server_Names) then

  begin

    Application.MessageBox('无法获取服务器列表,可能缺少客户端DLL库函数','错误提示',MB_OK);

    exit;

  end;

  for lcv := 0 to server_Names.Count - 1 do

  begin

    SetLength(PdmoObject,lcv + 1);

    with PdmoObject[lcv] do

    begin

      SQL_DMO := CoSQLServer.Create;

      SQL_DMO.Name := Trim(server_Names[lcv]);

      //登陆安全属性,NT 身份验证

      SQL_DMO.LoginSecure := false;

      // 设置一个连接超时

      SQL_DMO.LoginTimeout := 3;

      //自动重新登陆,如果第一次失败后

      SQL_DMO.AutoReconnect := true;

      SQL_DMO.ApplicationName := server_Names[lcv];

      lConnected := false;

    end;

  end;

end;

 

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

begin

  server_Names.Free;

end;

 

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

begin

  Action := CaFree;

end;

 

procedure TFormServersList.FormShow(Sender: TObject);

begin

  if CB_ServerNames.Items.Count > 0 then //列举所有服务器名字

    CB_ServerNames.Text := CB_ServerNames.Items.Strings[0];

end;

 

procedure TFormServersList.BitBtn2Click(Sender: TObject);

begin

  Close ;

end;

 

procedure TFormServersList.CB_DataNamesDropDown(Sender: TObject);

var

  icount ,Server_B : integer;

begin

  CB_DataNames.Clear;

  Screen.Cursor := CrHourGlass;

  Server_B := CB_ServerNames.Items.IndexOf(CB_ServerNames.Text) ;

  with PdmoObject[Server_B].SQL_DMO do

  begin

    if not PdmoObject[Server_B].lConnected then

    try

      Connect(Name,Trim(Ed_Login.Text),Trim(Ed_Pwd.Text));

    except

      Screen.Cursor := CrDefault ;

      Application.MessageBox('请检查用户名或密码是否正确','连接失败',MB_OK);

      Exit ;

    end;

    if not VerifyConnection(SQLDMOConn_ReconnectIfDead) then

    begin

      ShowMessage('在试图连接到SQL SERVER 2000 时出现错误' + #10#13 +

                             '确信是否加在了动态连接库SQLDMO.DLL');

      exit;

    end else

      PdmoObject[Server_B].lConnected := True ;

    Databases.Refresh(true);

    for icount := 1 to Databases.Count do

      CB_DataNames.Items.Add(Databases.Item(icount,null).name);

  end;

  Screen.Cursor := CrDefault ;

end

end.

 

 

相关专题

更多
Word 字间距调整方法汇总
Word 字间距调整方法汇总

本专题整合了Word字间距调整方法,阅读下面的文章了解更详细操作。

2

2025.12.24

任务管理器教程
任务管理器教程

本专题整合了任务管理器相关教程,阅读下面的文章了解更多详细操作。

2

2025.12.24

AppleID格式
AppleID格式

本专题整合了AppleID相关内容,阅读专题下面的文章了解更多详细教程。

0

2025.12.24

csgo视频观看入口合集
csgo视频观看入口合集

本专题整合了csgo观看入口合集,阅读下面的文章了知道更多入口地址。

29

2025.12.24

yandex外贸入口合集
yandex外贸入口合集

本专题汇总了yandex外贸入口地址,阅读下面的文章了解更多内容。

58

2025.12.24

添加脚注通用方法
添加脚注通用方法

本专题整合了添加脚注方法合集,阅读专题下面的文章了解更多内容。

1

2025.12.24

重启电脑教程汇总
重启电脑教程汇总

本专题整合了重启电脑操作教程,阅读下面的文章了解更多详细教程。

3

2025.12.24

纸张尺寸汇总
纸张尺寸汇总

本专题整合了纸张尺寸相关内容,阅读专题下面的文章了解更多内容。

5

2025.12.24

Java Spring Boot 微服务实战
Java Spring Boot 微服务实战

本专题深入讲解 Java Spring Boot 在微服务架构中的应用,内容涵盖服务注册与发现、REST API开发、配置中心、负载均衡、熔断与限流、日志与监控。通过实际项目案例(如电商订单系统),帮助开发者掌握 从单体应用迁移到高可用微服务系统的完整流程与实战能力。

1

2025.12.24

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
C# 教程
C# 教程

共94课时 | 5.2万人学习

ASP 教程
ASP 教程

共34课时 | 2.8万人学习

SQL 教程
SQL 教程

共61课时 | 3万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号