Delphi - Listado SQL Server

 
Vista:

Listado SQL Server

Publicado por Yohan (3 intervenciones) el 24/04/2006 19:28:40
Ante todo buenas. Les escribo pues esttoy tratando de hacer una aplicacion en delphi y SQL pero me gustaria saber como optener un listado de los server disponibles en mi red, si me pudieran ayudar se lo agradeceria sin mas.

Mystery.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Listado SQL Server

Publicado por Nitrus (11 intervenciones) el 08/05/2006 11:57:23
Espero te sirva esta pieza de Codigo

procedure TForm1.Button1Click(Sender: TObject);
begin
GetSQLServers(Memo1.Lines);
end;

const
SV_TYPE_SQLSERVER = $00000004;

type
_SERVER_INFO_100 = packed record
sv100_platform_id:DWORD;
sv100_name: PWideChar;
end;
SERVER_INFO_100 = _SERVER_INFO_100;
TServerInfo100 = SERVER_INFO_100;
LPSERVER_INFO_100 = ^SERVER_INFO_100;
PServerInfo100 = ^TServerInfo100;
TArrServerInfo100 = Array [0..Pred(MaxWord)] of TServerInfo100;
PArrServerInfo100 = ^TArrServerInfo100;

function NetServerEnum(servername: PWideString; level: DWORD; out bufptr: Pointer; prefmaxlen: DWORD;
entriesread: PDWORD; totalentries: PDWORD; servertype: DWORD; domain: PWideChar;
resumehandle: PDWORD): DWORD; stdcall; external 'netapi32.dll';
function NetApiBufferFree(buffer: Pointer): DWORD; stdcall; external 'netapi32.dll';

function GetSQLServers(List: TStrings): Integer;
var lpEntries: PArrServerInfo100;
dwPrefMaxLen: DWORD;
dwEntriesRead: DWORD;
dwTotalEntries:DWORD;
dwTotalCount: DWORD;
dwServerType: DWORD;
dwResumeHandle:DWORD;
dwStatus: DWORD;
begin

if Assigned(List) then List.Clear;
dwServerType:=SV_TYPE_SQLSERVER;
dwPrefMaxLen:=DWORD(-1);
dwEntriesRead:=0;
dwTotalEntries:=0;
dwTotalCount:=0;
dwResumeHandle:=0;
result:=0;

dwStatus:=NetServerEnum(nil, 100, Pointer(lpEntries), dwPrefMaxLen, @dwEntriesRead, @dwTotalCount, SV_TYPE_SQLSERVER, nil, @dwResumeHandle);

if ((dwStatus = ERROR_SUCCESS) or (dwStatus = ERROR_MORE_DATA)) then
begin

if Assigned(lpEntries) then
begin
while (dwEntriesRead > 0) do
begin
Dec(dwEntriesRead);
Inc(result);
if Assigned(List) then List.Add(WideCharToString(lpEntries[dwEntriesRead].sv100_name));
end;
NetApiBufferFree(lpEntries);
end;
end;

end;

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar