🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.delphi.bazy-danych
Article #82777

Re: Pobranie nazw instancji MS SQLa

#82777
From: goo-mlyny
Date: Thu, 27 Apr 2017 09:38
72 lines
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-mail
References: <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