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

Вниз

Как получить список MSSQL-серверов, зарегистрированных в сети   Найти похожие ветки 

 
kas   (2004-05-06 15:52) [0]

Как получить список MSSQL-серверов, зарегистрированных в сети


 
Nikolay M. ©   (2004-05-06 16:26) [1]

Яндексом пользоваться разучился?
http://www.sql.ru/forum/actualthread.aspx?bid=20&tid=7068


 
kas   (2004-05-07 09:23) [2]

а без SQL DMO?... хотелось бы...


 
Reindeer Moss Eater ©   (2004-05-07 09:34) [3]

MSSQL сервера не регистрируются в сети.
Они регистрируются на конкретной машине с установленным клиентом MSSQL.
Список серверов клиент помещает в реестр. Там их и ищи.


 
paul_k ©   (2004-05-07 09:41) [4]

Через запрос к Active Directory


 
freeman82   (2004-05-07 09:43) [5]

NetServerEnum


 
Reindeer Moss Eater ©   (2004-05-07 09:46) [6]

Все это очень частные случаи.
АD может и не быть.
А NetServerEnum не всегда видит все сервера даже в пределах до ближайшего маршрутизатора. О других сетях, за маршрутизаторами, в которых могут находиться рабочие и запущенные сервера я вообще не говорю.


 
Erik ©   (2004-05-07 09:49) [7]

Если есть диапазон адресов и номер порта, то можно проскарировать их и проанализировать ответ. Незнаю точно что надо посылать MsSQL серверу, но можно посмотреть снифером. Тогда послать туже строку всему диапазону методом перебора.


 
Reindeer Moss Eater ©   (2004-05-07 09:51) [8]

Если есть диапазон адресов и номер порта,

Я бы сказал номера портов


 
SergeyV   (2004-05-07 11:53) [9]

способ с sql.ru хороший вот только медленный, запустилось приложение и ждешь обновления окна коннектов :(


 
kas   (2004-05-07 15:09) [10]

вот ADOConnection как-то с этим справляется.... и неплохо справляется... вот только как?... и MS SQL на станции необязателен... и SQL DMO не присутствует....


 
sniknik ©   (2004-05-07 15:35) [11]

> ADOConnection как-то с этим справляется.
проверь на машине где гарантированно нет SQL DMO, получиш пустой список, гарантирую.


 
Kas   (2004-05-07 15:48) [12]

>Проверь на машине где гарантированно нет SQL DMO, получиш пустой список, гарантирую.

Я проверял... справляется.... так что не гарантируй...


 
Курдль ©   (2004-05-07 15:56) [13]

Могу дать фрагмент кода, как искать все сервера, зарегистрированные в ODBC.


 
Kas   (2004-05-07 15:58) [14]

скинь в почту. будет интересно...


 
Курдль ©   (2004-05-07 16:00) [15]

Да нафиг в почту - он короткий:
function TfrmLogin.FillAliasList(AItems: TStrings): Boolean;
const
 cODBCPath = "\Software\ODBC\ODBC.INI\ODBC Data Sources";
var
 Reg: TRegistry;
begin
 Reg := TRegistry.Create;
 try
   Reg.RootKey := HKEY_CURRENT_USER;
   if not Reg.OpenKey(cODBCPath, False) then
     Application.MessageBox("Îøèáêà ïðè îòêðûòèè ðååñòðà", "Îøèáêà", MB_ICONSTOP)
   else Reg.GetValueNames(AItems);
 finally
   Reg.Free;
 end;
end;


 
sniknik ©   (2004-05-07 16:36) [16]

> проверял... справляется.... так что не гарантируй...
значит он там есть. сделай проверку на сам DMO.

если затрудняешся

unit Unit1;

interface

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

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

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);

function GetDmoPresents: string;

 var Serv: variant;
 begin
   result:= "нет dmo, списка mssql серверов не будет";
   try
     CreateOleObject("SQLDMO.SQLServer");
     result:= "есть dmo, список mssql серверов присутствует";
   finally
     Serv:= null;
   end;
 end;

begin
 MessageBox(0, PChar(GetDmoPresents), "DMO message", MB_OK);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
 PromptDataSource(Handle , "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False");
end;

end.

dfm

object Form1: TForm1
 Left = 551
 Top = 212
 Width = 215
 Height = 159
 Caption = "Form1"
 Color = clBtnFace
 Font.Charset = DEFAULT_CHARSET
 Font.Color = clWindowText
 Font.Height = -11
 Font.Name = "MS Sans Serif"
 Font.Style = []
 OldCreateOrder = False
 PixelsPerInch = 96
 TextHeight = 13
 object Button1: TButton
   Left = 16
   Top = 24
   Width = 161
   Height = 25
   Caption = "Test DMO"
   TabOrder = 0
   OnClick = Button1Click
 end
 object Button2: TButton
   Left = 16
   Top = 64
   Width = 161
   Height = 25
   Caption = "PromptDataSource"
   TabOrder = 1
   OnClick = Button2Click
 end
end


 
sniknik ©   (2004-05-07 16:52) [17]

функцию можно немного "поправить", а то будет ругатся при отсутствии (не проверяя положил).

так лутше
 function GetDmoPresents: string;
 var Serv: variant;
 begin
   result:= "нет dmo, списка mssql серверов не будет";
   try
     CreateOleObject("SQLDMO.SQLServer");
     result:= "есть dmo, список mssql серверов присутствует";
     Serv:= null;
   except {NOTHING} end;
 end;


 
kas   (2004-05-07 16:54) [18]

Спасибо за пример (хоть и запоздалый).
Но тем же самым макаром я выяснял наличие SQLDMO,
после чего был ...см. пункт [10].

ну ежли вы так уверены, я еще разок проверю....


 
sniknik ©   (2004-05-07 17:03) [19]

да уж торопливость до хорошего не доводит ;о(
еше посмотрел еще исправление
Serv:= CreateOleObject("SQLDMO.SQLServer");
о то дальнейшее
Serv:= null; безсмысленно.

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



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

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

Наверх




Память: 0.51 MB
Время: 0.024 c
4-1080885334
Sapsi
2004-04-02 09:55
2004.05.30
Поиск edit и button в чужом окне


14-1084284336
Gero
2004-05-11 18:05
2004.05.30
Меню


8-1079595546
Ziko
2004-03-18 10:39
2004.05.30
Рисование штриховых и пунктирных линий GDI толщиной > 1


14-1084440218
Dmitriy O.
2004-05-13 13:23
2004.05.30
Приятель хочет купить ком нужен совет.


1-1084480278
Idiliya
2004-05-14 00:31
2004.05.30
Насколько «резиновый» компонент Memo?