Posteado por: alejandrolaorden | 25 Octubre, 2008

Lista de Servidores SQL disponibles

Hola, publico el único algoritmo que me ha funcionado en Delphi para encontrar los servidores activos de SQL disponible.

También listar servidores de sql server desde TSQL

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, ADODB, ActiveX, ComObj, AdoInt, OleDB, StdCtrls;
procedure ListAvailableSQLServers(Names : TStrings);
var
  RSCon                    : ADORecordsetConstruction;
  Rowset                   : IRowset;
  SourcesRowset            : ISourcesRowset;
  SourcesRecordset         : _Recordset;
  SourcesName, SourcesType : TField;
begin
  OleCheck(CoCreateInstance(CLASS_Recordset, nil, CLSCTX_INPROC_SERVER or
                            CLSCTX_LOCAL_SERVER, IUnknown, SourcesRecordset) );
  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'); { do not localize }
    SourcesType := FieldByName('SOURCES_TYPE'); { do not localize }
    Names.BeginUpdate;
      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;

//Si queréis un ejemplo completo, con servidores sql server y bases de datos, descargadlo aquí

Dejar una respuesta

Su respuesta:

Categorías