Article View: pl.comp.lang.delphi.bazy-danych
Article #82777Re: Pobranie nazw instancji MS SQLa
From: goo-mlyny
Date: Thu, 27 Apr 2017 09:38
Date: Thu, 27 Apr 2017 09:38
72 lines
3555 bytes
3555 bytes
W dniu środa, 26 kwietnia 2017 11:09:36 UTC+2 użytkownik Pancio napisał:
> O ile znalazlem w internecie rozwiazanie z pobraniem listy nazw serwera (serwerow), to nie moge poradzic sobie z procedura, ktora pobralaby liste nazw instancji przypisanych do danego serwera MS SQL.
> Czy ktos z Was przerabial to moze juz u siebie i moglby mi podsunac jakis link (lub na maila kawalek kodu odpowiedzialnego za w/w zadanie)?
Spróbuj może takiej procedury:
procedure ListAvailableSQLServers(Names: TStringList);
var
RSCon: ADORecordsetConstruction;
Rowset: IRowset;
SourcesRowset: ISourcesRowset;
SourcesRecordset: _Recordset;
SourcesName, SourcesType: TField;
function PtCreateADOObject(const ClassID: TGUID): IUnknown;
var
Status: HResult;
FPUControlWord: Word;
begin
asm
FNSTCW FPUControlWord
end;
Status := CoCreateInstance(
CLASS_Recordset,
nil,
CLSCTX_INPROC_SERVER or
CLSCTX_LOCAL_SERVER,
IUnknown,
Result);
asm
FNCLEX
FLDCW FPUControlWord
end;
OleCheck(Status);
end;
begin
SourcesRecordset :=
PtCreateADOObject(CLASS_Recordset)
as _Recordset;
RSCon :=
SourcesRecordset
as ADORecordsetConstruction;
SourcesRowset :=
CreateComObject(ProgIDToClassID('SQLOLEDB Enumerator'))
as ISourcesRowset;
OleCheck(SourcesRowset.GetSourcesRowset(
nil,
IRowset, 0,
nil,
IUnknown(Rowset)));
RSCon.Rowset := RowSet;
with TADODataSet.Create(nil) do
try
Recordset := SourcesRecordset;
SourcesName := FieldByName('SOURCES_NAME');
SourcesType := FieldByName('SOURCES_TYPE');
Names.BeginUpdate;
Names.Clear;
try
while not EOF do
begin
if (SourcesType.AsInteger = DBSOURCETYPE_DATASOURCE) and
(SourcesName.AsString <> '') then
Names.Add(SourcesName.AsString);
Next;
end;
finally
Names.EndUpdate;
end;
finally
Free;
end;
end;
Technical Details
Message-ID:
<2a94cc5c-220a-40e9-8ea7-740ac026b1c1@googlegroups.com>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!news.nask.pl!news.nask.org.pl!news.unit0.net!weretis.net!feeder6.news.weretis.net!feeder.usenetexpress.com!feeder1.iad1.usenetexpress.com!border1.nntp.dca1.giganews.com!nntp.giganews.com!c45no96619qtb.1!news-out.google.com!x200ni644itb.0!nntp.google.com!c26no153604itd.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mailReferences:
<5a158154-ab34-4ab6-b5ba-fa3902623923@googlegroups.com>Show Full Headers
Complete Article Headers
X-Received: by 10.129.153.151 with SMTP id q145mr2062243ywg.151.1493285917256; Thu, 27 Apr 2017 02:38:37 -0700 (PDT) X-Received: by 10.157.13.170 with SMTP id 39mr100954ots.18.1493285917186; Thu, 27 Apr 2017 02:38:37 -0700 (PDT) Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!news.nask.pl!news.nask.org.pl!news.unit0.net!weretis.net!feeder6.news.weretis.net!feeder.usenetexpress.com!feeder1.iad1.usenetexpress.com!border1.nntp.dca1.giganews.com!nntp.giganews.com!c45no96619qtb.1!news-out.google.com!x200ni644itb.0!nntp.google.com!c26no153604itd.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail Newsgroups: pl.comp.lang.delphi.bazy-danych Date: Thu, 27 Apr 2017 02:38:36 -0700 (PDT) In-Reply-To: <5a158154-ab34-4ab6-b5ba-fa3902623923@googlegroups.com> Complaints-To: groups-abuse@google.com Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=82.160.35.66; posting-account=fWqZgQoAAADitsi6_KUSRGX4FN2qsdaB NNTP-Posting-Host: 82.160.35.66 References: <5a158154-ab34-4ab6-b5ba-fa3902623923@googlegroups.com> User-Agent: G2/1.0 MIME-Version: 1.0 Message-ID: <2a94cc5c-220a-40e9-8ea7-740ac026b1c1@googlegroups.com> Subject: Re: Pobranie nazw instancji MS SQLa From: goo-mlyny@ciach.net Injection-Date: Thu, 27 Apr 2017 09:38:37 +0000 Lines: 75 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit