Einzelnen Beitrag anzeigen

Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#2

AW: SQL-DMO / SMO Alternativen in D6

  Alt 3. Okt 2012, 10:42
Für einen Teil der Fragen hätte ich zumindest Teillösungen
Delphi-Quellcode:

var
  i:Integer;

begin
ListAvailableSQLServers(Memo1.lines);
  for I := 0 to Memo1.lines.Count - 1 do
    begin
        TcpClient1.Close;
        TcpClient1.RemoteHost := Memo1.lines[i];
        try
          TcpClient1.Open;
          if TcpClient1.Connected then Memo1.lines[i] := Memo1.lines[i] + ' Active'
          else Memo1.lines[i] := Memo1.lines[i] + ' Not Active';
        except
          Memo1.lines[i] := Memo1.lines[i] + ' ERROR';
        end;
    end;
   TcpClient1.Close;
end;



procedure ListAvailableSQLServers(Names : TStrings);
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;
    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;
Datenbanken erstellen/ändern ... sollte IMHO eh klar sein ??
Datenbankstrukturen/Fremdschlüssel/ (Sichten - Prozeduren - Funktionen) als Scripte(Struktur), Rechte etc. bekommt man auch alles über SQL.

Wenn Du da was brauchst, sag Bescheid dann hänge ich meine Rechteverwaltung und meinen DB-Dokumenter (ist schon etwas älter und Du müsstest um das HTML Geraffel herumlesen) an.
Miniaturansicht angehängter Grafiken
bild-5.jpg   bild-6.jpg   bild-7.jpg   bild-8.jpg  
Angehängte Dateien
Dateityp: zip MSSQL_DOKU_EXE.zip (630,2 KB, 8x aufgerufen)
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)

Geändert von Bummi ( 3. Okt 2012 um 11:27 Uhr)
  Mit Zitat antworten Zitat