Enumerate SQL servers
Posted: Tue 18 Mar 2014 11:13
Is there a function / procedure for enumerating MS SQL servers?
Discussion forums for open issues and questions concerning database tools, data access components and developer tools from Devart
https://forums.devart.com/
Code: Select all
Uses
MSServicesUni;
....
Var
Lista : TStrings;
ServEnum: TMSServerEnumerator;
begin
Lista:=TStringList.Create;
ServEnum:=TMSServerEnumerator.Create;
ServEnum.GetServerList(Lista);
ServEnum.Free;
EdServers.Lines.AddStrings(Lista);
Lista.Free;
end;Code: Select all
program Project1;
{$APPTYPE CONSOLE}
uses
MSServicesUni,
SysUtils,
Classes,
Uni,
SQLServerUniProvider,
ActiveX;
Var
ServerList, InstanceList: TStringList;
ServEnum: TMSServerEnumerator;
i, j: integer;
UniConnection: TUniConnection;
begin
CoInitialize(nil);
try
ServerList := TStringList.Create;
try
ServEnum := TMSServerEnumerator.Create;
try
ServEnum.GetServerList(ServerList);
UniConnection := TUniConnection.Create(nil);
try
UniConnection.ProviderName := 'SQL Server';
UniConnection.Username := 'sa';
for i := 0 to ServerList.Count - 1 do begin
Writeln(ServerList[i]);
UniConnection.Server := ServerList[i];
UniConnection.Connect;
InstanceList := TStringList.Create;
try
UniConnection.GetDatabaseNames(InstanceList);
for j := 0 to InstanceList.Count - 1 do
Writeln(#9 + InstanceList[j]);
finally
InstanceList.Free;
UniConnection.Disconnect;
end;
end;
finally
UniConnection.Free;
end;
finally
ServEnum.Free;
end;
finally
ServerList.Free;
end;
finally
CoUninitialize;
readln;
end;
end.