Главная страница
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
14-94539
kaif
2002-03-21 00:05
2002.04.29
Как купить D5 Pro?


1-94479
Ross
2002-04-15 19:58
2002.04.29
Что я делаю не так?


3-94271
DEJRGU
2002-04-08 11:17
2002.04.29
Как в TSQL перевести строку


3-94340
hn
2002-04-09 17:25
2002.04.29
Семейство Tquery


1-94411
vlad0007
2002-04-17 23:30
2002.04.29
Люди, МАСТЕРА ну хоть кто нибудь...