Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.04.29;
Скачать: CL | DM;

Вниз

Как получить список MS SQL серверов в сети?   Найти похожие ветки 

 
anton_private ©   (2002-04-08 14:03) [0]

Как получить список MS SQL серверов в сети?


 
wicked ©   (2002-04-08 15:04) [1]

имхо никак... прямого пути нет...
можно, разве, получить список доступных хостов (отдельная тема), а потом пробовать подключиться к каждому из них... но это будет долго...


 
anton_private ©   (2002-04-08 15:11) [2]

ПОнятно, что прямого пути нет.
Как не напрямую узнать? Ну там MS SQL API.....


 
Delirium ©   (2002-04-08 15:15) [3]

В SQLDMO есть соответствующая функция, точнее к сожалнию сказать не могу - сижу не на рабочем месте :)


 
handra ©   (2002-04-08 17:52) [4]

Только для NT/2000:
type
SERVER_INFO_101 = record
sv101_platform_id: DWORD;
sv101_name: LPWSTR;
sv101_version_major: DWORD;
sv101_version_minor: DWORD;
sv101_type: DWORD;
sv101_comment: LPWSTR;
end;
PSERVER_INFO_101 = ^SERVER_INFO_101;

TNetServerEnum = function(
Servername: LPCWSTR;
Level: DWORD;
Bufptr: Pointer;
Prefmaxlen: DWORD;
Entriesread: LPDWORD;
Totalentries: LPDWORD;
Servertype: DWORD;
Domain: LPCWSTR;
Resume_handle: LPDWORD): DWORD; stdcall;
TNetApiBufferFree = function(Buffer: Pointer): DWORD; stdcall;

procedure TForm1.Button5Click(Sender: TObject);
const
SV_TYPE_SQLSERVER: DWORD = 4;
var
I: Integer;
DllHandle: THandle;
Entriesread: DWORD;
Totalentries: DWORD;
DwResumeHandle: DWORD;
Buffer, RealBuffer: Pointer;
NetServerEnum: TNetServerEnum;
NetApiBufferFree: TNetApiBufferFree;
begin
DllHandle := LoadLibrary("Netapi32.dll");
if DllHandle <> 0 then
try
NetServerEnum := GetProcAddress(DllHandle, "NetServerEnum");
NetApiBufferFree := GetProcAddress(DllHandle, "NetApiBufferFree");

if not (@NetServerEnum = nil)
or (@NetApiBufferFree = nil) then
begin
Entriesread := 0;
Totalentries := 0;
NetServerEnum("", 101, @RealBuffer, DWORD(-1), @Entriesread,
@Totalentries, SV_TYPE_SQLSERVER, nil, @DwResumeHandle);
if RealBuffer <> nil then
try
Buffer := RealBuffer;
for I := 0 to Entriesread - 1 do
begin
Memo1.Lines.Add(string(PSERVER_INFO_101(Buffer).sv101_name));
Buffer := Pointer(DWORD(Buffer) + SizeOf(SERVER_INFO_101));
end;
finally
NetApiBufferFree(RealBuffer);
end;
end;
finally
FreeLibrary(DllHandle);
end;
end;



 
handra ©   (2002-04-08 17:55) [5]

Только при наличии SQLDMO:
var oApp:OleVariant;
i,j:Integer;

oApp:=CreateOleObject("SQLDMO.Application");
for i:=1 to oApp.ServerGroups.Count do
begin
for j:=1 to oApp.ServerGroups.item(i).RegisteredServers.Count do
Memo1.Lines.Add((oApp.ServerGroups.item(i).RegisteredServers.Item(j).Name);
end;
oApp:=Unassigned;


 
unfam   (2002-04-09 03:04) [6]

uses SQLDMO_TLB;

var
IGrp: _ServerGroup;
IApp:_Application;
i:Integer;
lb:TListBox;

begin
IApp:=CoApplication.Create;
IGrp:=IApp.ServerGroups.Item(1);
for i:=1 to IGrp.RegisteredServers.Count do
lb.Items.Add(IGrp.RegisteredServers.Item(i).Name);
end;



Страницы: 1 вся ветка

Текущий архив: 2002.04.29;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.014 c
1-94413
Ирина
2002-04-18 00:37
2002.04.29
Помогите!!!!!!!!!!


1-94475
eSKey
2002-04-15 17:39
2002.04.29
И еще раз о хранении пароля


7-94584
VadimI
2002-01-29 09:34
2002.04.29
Проверка коннекта через модем


1-94452
Михаил
2002-04-15 12:07
2002.04.29
Создание компонента во время работы программы


3-94289
IronHawk
2002-04-05 10:31
2002.04.29
Приветствую Мастеров ! Как из обыкновенного Edit-a сунуть ...