求 sqldmo的使用方法,以及怎么调用DTS,请高手赐教!

ProgGuid 2003-08-21 09:06:48
最好有源码,有资料也可以,如果好的话,我在加100分!
computerfan@163.com
...全文
63 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
sharesky 2003-08-22
  • 打赏
  • 举报
回复
以下一段可以取局域网内数据库信息


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;

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.


sharesky 2003-08-22
  • 打赏
  • 举报
回复
我全要呢
你具体要完成什么功能?
请与我联系shareskyy@sina.com.cn
ProgGuid 2003-08-21
  • 打赏
  • 举报
回复
怎么没有人要分么?

828

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧