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

Вниз

Как получить список 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.49 MB
Время: 0.038 c
14-1084368392
a3a3ello
2004-05-12 17:26
2004.05.30
delphi и XP


3-1083845681
Wolferio
2004-05-06 16:14
2004.05.30
Сервер!!!???


14-1084200692
ССЗБ
2004-05-10 18:51
2004.05.30
Просмотр Word-овского файла


1-1084887951
Dysan
2004-05-18 17:45
2004.05.30
StrToDateTime(Sdate) ?


14-1084108731
ПЛОВ
2004-05-09 17:18
2004.05.30
Где б достать TRichEdit с картинками =)





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский