c# 得到局域网中可用SqlServer服务器列表

c# 得到局域网中可用SqlServer服务器列表,第1张

代码给你 static void Main(string[] args) { // Retrieve the enumerator instance and then the data SqlDataSourceEnumerator instance =SqlDataSourceEnumeratorInstance; SystemDataDataTable table = instanceGetDataSources(); // Display the contents of the table DisplayData(table); ConsoleWriteLine("Press any key to continue"); ConsoleReadKey(); } private static void DisplayData(SystemDataDataTable table) { foreach (SystemDataDataRow row in tableRows) { foreach (SystemDataDataColumn col in tableColumns) { ConsoleWriteLine("{0} = {1}", colColumnName, row[col]); } ConsoleWriteLine("==="); } }

程序运行界面如下:

服务器列表中是局域网中所有的 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 TFormServersListGetAllServers(ServerList : TStringList) : Boolean;

var

sApp : _Application ;

sName : NameList;

iPos : integer;

begin

Result := True ;

try

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

sName := sAppListAvailableSQLServers;

except

Result := False;

Exit;

end;

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

for iPos := 1 to sNameCount - 1 do

begin

CB_ServerNamesItemsAdd(sNameItem(iPos));

ServerListAdd(sNameItem(iPos));

end;

end;

procedure TFormServersListFormCreate(Sender: TObject);

var

lcv : integer;

begin

server_Names := TStringListCreate;

if not GetAllServers(server_Names) then

begin

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

exit;

end;

for lcv := 0 to server_NamesCount - 1 do

begin

SetLength(PdmoObject,lcv + 1);

with PdmoObject[lcv] do

begin

SQL_DMO := CoSQLServerCreate;

SQL_DMOName := Trim(server_Names[lcv]);

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

SQL_DMOLoginSecure := false;

// 设置一个连接超时

SQL_DMOLoginTimeout := 3;

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

SQL_DMOAutoReconnect := true;

SQL_DMOApplicationName := server_Names[lcv];

lConnected := false;

end;

end;

end;

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

begin

server_NamesFree;

end;

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

begin

Action := CaFree;

end;

procedure TFormServersListFormShow(Sender: TObject);

begin

if CB_ServerNamesItemsCount > 0 then //列举所有服务器名字

CB_ServerNamesText := CB_ServerNamesItemsStrings[0];

end;

procedure TFormServersListBitBtn2Click(Sender: TObject);

begin

Close ;

end;

procedure TFormServersListCB_DataNamesDropDown(Sender: TObject);

var

icount ,Server_B : integer;

begin

CB_DataNamesClear;

ScreenCursor := CrHourGlass;

Server_B := CB_ServerNamesItemsIndexOf(CB_ServerNamesText) ;

with PdmoObject[Server_B]SQL_DMO do

begin

if not PdmoObject[Server_B]lConnected then

try

Connect(Name,Trim(Ed_LoginText),Trim(Ed_PwdText));

except

ScreenCursor := CrDefault ;

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

Exit ;

end;

if not VerifyConnection(SQLDMOConn_ReconnectIfDead) then

begin

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

'确信是否加在了动态连接库SQLDMODLL');

exit;

end else

PdmoObject[Server_B]lConnected := True ;

DatabasesRefresh(true);

for icount := 1 to DatabasesCount do

CB_DataNamesItemsAdd(DatabasesItem(icount,null)name);

end;

ScreenCursor := CrDefault ;

end

end

以上就是关于c# 得到局域网中可用SqlServer服务器列表全部的内容,包括:c# 得到局域网中可用SqlServer服务器列表、如何获取局域网中的所有 SQL Server 服务器、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/9651803.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存