Форум: "Базы";
Текущий архив: 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