Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2005.07.31;
Скачать: [xml.tar.bz2];

Вниз

MS SQL Client -> MS SQL Server   Найти похожие ветки 

 
Homa_Programer ©   (2005-05-19 08:26) [0]

Как в сети найти компы на которых установлен MS SQL Server???
в сети около сотни компов из них надо выбрать только те у которых есть сервак базы данных :(


 
app ©   (2005-05-19 08:48) [1]

Сканирование всех компьютеров и всех портов в общем случае, сканирование порта 1434 и/или 1433 в частном.


 
Anatoly Podgoretsky ©   (2005-05-19 08:50) [2]

Проще издать приказ, что бы пользователи в установленный срок сообщили об установленных у них серверах, со штрафными мерами.
А другие SQL сервера, что не интересуют, почему дискриманация по отношению к MSSQL


 
ANB ©   (2005-05-19 09:14) [3]

NetServerEnum + F1.


 
alex_***   (2005-05-19 10:57) [4]

можно у DMO спросить еще, в принципе, только он может не показать сервера, не настроенные нормально (точнее не знаю - у меня не показывал сервера, которые не пинговались по DNS, дальше не разбирался)


 
Homa_Programer ©   (2005-05-19 23:28) [5]

> app ©   (19.05.05 08:48) [1] > Сканирование всех компьютеров
это кажется не лучший вариант... и займет многа времени...

> Проще издать приказ, что бы пользователи в установленный
> срок сообщили об установленных у них серверах, со штрафными
> мерами.

это кажется не по теме...
> ANB ©   (19.05.05 09:14) [3]
> NetServerEnum + F1.

а подробнее не подскажешь???


 
Reindeer Moss Eater ©   (2005-05-19 23:30) [6]

> NetServerEnum + F1.

а подробнее не подскажешь???


А подробнее и не надо потому что это не всегда работает.


 
liver   (2005-05-20 09:32) [7]


unit NetSrvList;

interface
uses Classes;

const

SV_TYPE_WORKSTATION        = $00000001;// All LAN Manager workstations
SV_TYPE_SERVER              = $00000002;// All LAN Manager servers
SV_TYPE_SQLSERVER          = $00000004;// Any server running with Microsoft SQL Server
SV_TYPE_DOMAIN_CTRL        = $00000008;// Primary domain controller
SV_TYPE_DOMAIN_BAKCTRL      = $00000010;// Backup domain controller
SV_TYPE_TIMESOURCE          = $00000020;// Server running the Timesource service
SV_TYPE_AFP                = $00000040;// Apple File Protocol servers
SV_TYPE_NOVELL              = $00000080;// Novell servers
SV_TYPE_DOMAIN_MEMBER      = $00000100;// LAN Manager 2.x Domain Member
SV_TYPE_LOCAL_LIST_ONLY           = $40000000;// Servers maintained by the browser
SV_TYPE_PRINT              = $00000200;// Server sharing print queue
SV_TYPE_DIALIN              = $00000400;// Server running dial-in service
SV_TYPE_XENIX_SERVER        = $00000800;// Xenix server
SV_TYPE_MFPN                = $00004000;// Microsoft File and Print for Netware
SV_TYPE_NT                  = $00001000;// Windows NT (either Workstation or Server)
SV_TYPE_WFW                = $00002000;// Server running Windows for Workgroups
SV_TYPE_SERVER_NT          = $00008000;// Windows NT non-DC server
SV_TYPE_POTENTIAL_BROWSER  = $00010000;// Server that can run the Browser service
SV_TYPE_BACKUP_BROWSER      = $00020000;// Server running a Browser service as backup
SV_TYPE_MASTER_BROWSER      = $00040000;// Server running the master Browser service
SV_TYPE_DOMAIN_MASTER      = $00080000;// Server running the domain master Browser
SV_TYPE_DOMAIN_ENUM        = $80000000;// Primary Domain
SV_TYPE_WINDOWS                   = $00400000;// Windows 95 or later
SV_TYPE_ALL                = $FFFFFFFF;// All servers

type
   TServerInfo = class( TObject )
   svr_Platform_ID : integer;
   svr_Name : WideString;
   svr_Version_Major,
   svr_Version_Minor,
   svr_Type : integer;
   svr_Comment : WideString;
   end;

   TServerList = class( TObject )
   protected
   FList : TList;
   FServer, FDomain : WideString;
   FServerMask : longint;
   procedure Clear;
   function  GetServer( Index : integer ) : TServerInfo;
   function  GetCount : integer;
   public
   constructor Create( AServer, ADomain : string; AServerMask : longint );
   destructor  Destroy; override;
   procedure Refresh;
   property Servers[ index : integer ] : TServerInfo read GetServer; default;
   property Count : integer read GetCount;
   end;

implementation
type
   TServer_Info_101 = record
   svr_Platform_ID : integer;
   svr_Name : PWideChar;
   svr_Version_Major,
   svr_Version_Minor,
   svr_Type : integer;
   svr_Comment : PWideChar;
   end;
   TServer_Infos_101 = array [1..($1FFFFFFF div SizeOf( TServer_Info_101 ))] of TServer_Info_101;

function  NetServerEnum( ServerName : PWideChar; Level : longint;
                       var BufPtr : pointer; PrefMaxLen : longint;
                       var EntriesRead, TotalEntries : longint;
                       ServType : longint; Domain : PWideChar;
                       var ResumeHandle : integer ) : longint;
                       stdcall; external "netapi32.dll" name "NetServerEnum";

constructor TServerList.Create( AServer, ADomain : string; AServerMask : longint );
begin
inherited Create;
Flist := TList.Create;
FServer := Aserver;
FDomain := ADomain;
FServerMask := AServerMask;
Refresh;
end;

destructor TServerList.Destroy;
begin
Clear;
FList.Free;
inherited Destroy;
end;

function TServerList.GetServer( Index : integer ) : TServerInfo;
begin
Result := TServerInfo( FList[ Index ]);
end;

function TServerList.GetCount : integer;
begin
Result := FList.Count;
end;

procedure TServerList.Clear;
var
 i : integer;
begin
for i := 0 to FList.Count - 1 do
   Servers[ i ].Free;
Flist.Clear;
end;

procedure TServerList.Refresh;
var
 EntRead, EntTotal, Resume, SrvCount, i : integer;
 Info : integer;
 Itm : TServerInfo;
 Data : pointer;
 pServer, pDomain : PWideChar;
begin
if FServer <> "" then
 pServer := PWideChar( FServer )
else pServer := nil;
if FDomain <> "" then
 pDomain := PWideChar( FDomain )
else pDomain := nil;

Clear;

//Получаем количество серверов указанного типа
Info := NetServerEnum( pServer, 101, Data, 0, EntRead, SrvCount,
 FServerMask, pDomain, Resume );

//60 * SrvCount - столько памяти выделяется под буфер
//предполагается, что вся информация суда влезет.
//Реально - может и не влезть. Хотя, пока такого
//не было.
Info := NetServerEnum( pServer , 101, Data, 60 * SrvCount, EntRead, EntTotal,
 FServerMask, pDomain, Resume );

for i := 1 to EntRead do begin
   Itm := TServerInfo.Create;
   with TServer_Infos_101( Data^ )[ i ] do begin
     Itm.svr_Platform_ID  := svr_Platform_ID;
     Itm.svr_Name          := svr_Name;
     Itm.svr_Version_Major := svr_Version_Major;
     Itm.svr_Version_Minor := svr_Version_Minor;
     Itm.svr_Type          := svr_Type;
     Itm.svr_Comment      := svr_Comment;
   end;
   FList.Add( Itm );
end;

end;

end.


использовать так:

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls;

type
 TForm1 = class(TForm)
   Button1: TButton;
   ListBox1: TListBox;
   procedure Button1Click(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

Uses
 NetSrvList;

procedure TForm1.Button1Click(Sender: TObject);
var
 L : TServerList;
 i : integer;
begin
 ListBox1.Clear;
 L := TServerList.Create( "", "", SV_TYPE_SQLSERVER );
 try
   for i := 0 to L.Count - 1 do
   begin
     ListBox1.Items.Add( L[i].svr_Name );
   end;
 finally
   L.Free;
 end;
end;

end.


 
paul_k ©   (2005-05-20 12:48) [8]

ну или к Active Directory обратится, если домен настроен


 
Homa_Programer ©   (2005-05-24 10:16) [9]


> liver   (20.05.05 09:32) [7]

БЛАГОДАРЮ!
ЩАС же и прверю :)


 
sniknik ©   (2005-05-24 12:06) [10]

liver   (20.05.05 09:32) [7]
это только для одной подсети, если в сети несколько доменов/подсетей, то выдаст только что есть в текущей.

Homa_Programer ©   (24.05.05 10:16) [9]
а говорил сканирование не подходит.. > "это кажется не лучший вариант... и займет многа времени..."


 
Fay ©   (2005-05-24 16:54) [11]

app ©   (19.05.05 8:48) [1]
Ага. А если сервак слушает только пайпы?


 
ANB ©   (2005-05-24 16:55) [12]


> Ага. А если сервак слушает только пайпы?
MS SQL Server ??????


 
Fay ©   (2005-05-24 17:03) [13]

ANB ©   (24.05.05 16:55) [12]
ДА!!!!!!!!!!!!!


 
Anatoly Podgoretsky ©   (2005-05-24 19:07) [14]

ANB ©   (24.05.05 16:55) [12]
А чего смущает, поддержаны по крайней мере 6 протоколов, так что и pipes может не быть, не говорю уж про TCP/IP

Fay ©   (24.05.05 16:54) [11]
А там есть оговорка "в общем случае" :-)


 
Homa_Programer ©   (2005-06-07 07:30) [15]


> liver   (20.05.05 09:32) [7]

не знаю почему, но работает не правильно! т.е. выводит не все серваки!!!


 
Anatoly Podgoretsky ©   (2005-06-07 09:23) [16]

Homa_Programer ©   (07.06.05 07:30) [15]
Читаем Anatoly Podgoretsky ©   (19.05.05 08:50) [2]


 
Homa_Programer ©   (2005-06-07 12:41) [17]


> Читаем Anatoly Podgoretsky ©   (19.05.05 08:50) [2]

читали!
только как ето будет выглядеть если ради одной проги издавать такой приказ? гдупости..


 
sniknik ©   (2005-06-07 13:08) [18]

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


 
NOlik   (2005-06-22 08:16) [19]

кстати, таким способом NamedInstance не найти - только с именем по умолчанию. И работает это все только по WinNT - а людям с Win98 можно повеситься с горя


 
ANB ©   (2005-06-22 08:27) [20]


> а людям с Win98 можно повеситься с горя
- зачем вешаться ? Можно тоже NT поставить и будет счастье.



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

Форум: "Базы";
Текущий архив: 2005.07.31;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.51 MB
Время: 0.041 c
3-1118912182
KorvinOE
2005-06-16 12:56
2005.07.31
Типы данных в MySQL


6-1114022677
Ospa
2005-04-20 22:44
2005.07.31
TidPop3 tidsmtp


1-1120482687
Антоныч
2005-07-04 17:11
2005.07.31
Построение графика в Excel через TExcelApplication


14-1120591020
Гаврила
2005-07-05 23:17
2005.07.31
Код да Винчи


4-1117141426
-=GaLaN=-
2005-05-27 01:03
2005.07.31
Определить тип приложения





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский