Announcement

Collapse
No announcement yet.

MS SQL Server im Netzwerk finden

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • MS SQL Server im Netzwerk finden

    Hallo,

    ich würde gerne alle verfügbaren MS SQL Server im Netzwerk finden, wenn es geht auch alle Datenbanken die es da gibt. Das muss ja irgendwie mögklich sein, oder? Unter VB hab ich das schon gefunden, leider nicht unter D6.

    Evtl. hat ja jemand einen Tipp für mich.

    Gruß

    Ronald

  • #2
    Es gibt 2 Lösungsmöglichkeiten wie unter

    http://www.entwickler-forum.de/webx?128@@.ee8e10e

    zu finde

    Comment


    • #3
      schau mal hier, betrifft zwar ADO/SQLDMO, aber vielleicht hilft es etwas weiter:

      http://www.winsoft.sk/adofaq.htm#Q8.2

      bye,
      Helmu

      Comment


      • #4
        Hallo,

        Deinen Tipp mit der JwaLM hab ich getestet. Leider scheint ein Fehler im Quelltext zu sein. Ich bekomme diese Unit nicht installiert. Evtl. mach ich ja was falsch.

        Diese Meldung bekomme ich beim Compilieren. Und ich weiß nicht recht, was jetzt zu tun ist:

        [Error] JwaWinType.pas(1790): $WEAKPACKAGEUNIT 'JwaWinType' cannot have initialization or finalization code

        Ich bin für jede Hilfe dankbar

        Gruß

        Ronal

        Comment


        • #5
          Hallo Helmut,

          gibt es das SQLDMO als Komponente? Der Quelltext sieht recht einfach aus. Ich habe auf dem Server schon eine SQLDMO.dll gefunden. Wenn ich die jetzt bei mir reinkopiere, woher weiß Delphi dann, was damit anzufangen ist?

          Gruß

          Ronal

          Comment


          • #6
            Hallo Ronaldo,

            der Fehler tritt bei mir nicht auf. Hat deine JwaWinType eine initialization oder finalization-Abschnitt (sollte nich der Fall sein)?

            Die SQLDMO-Schnittstelle kannst Du in Delphi verwenden, wenn Du über Projekt/Typbibliothek die Typbibliothek "Microsoft SQLDMO Object Library" importierst. Es wird eine SQLDMO_TLB.pas angelegt.<br>
            Aber wenn Du diese SQLDMO-Schnittstelle verwendest, mußt Du auch dafür sorgen das sie auf den entsprechenden Rechnern installiert ist
            (Adminrechte nötig)

            Comment


            • #7
              Hallo,

              ich denke keins von beiden. Sie hat aber einen Punkt am Ende. Und da ist die Markierung. Gibt es denn noch andere Downloadmöglichkeiten? Evtl. stimmt ja etwas bei der nicht.

              Gruß

              Ronal

              Comment


              • #8
                Achso, das mit der "Microsoft SQLDMO Object Library" geht leider nicht, da ich sie bei mir nicht drauf habe. Das mit der JwaLM wäre meiner Meinung nach, der bessere Weg.

                Gruß

                Ronal

                Comment


                • #9
                  Hier ein kleines Beispielprogramm welche die GetAvailableServer-Funktion verwendet
                  und nur noch JwaLM, JclSysInfo zusätzlich benötigt.

                  JwaLM: http://www.delphi-jedi.org/Jedi:APILIBRARY:346799 -> Win32API

                  JclSysInfo (Für GetWindowsVersion-Funktion): http://sourceforge.net/projects/jcl/

                  <pre>

                  unit DlgMain;

                  interface

                  uses
                  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
                  Dialogs, StdCtrls;

                  type
                  TForm1 = class(TForm)
                  lbxSQLServer: TListBox;
                  Button1: TButton;
                  procedure Button1Click(Sender: TObject);
                  private
                  { Private-Deklarationen }
                  public
                  { Public-Deklarationen }
                  end;

                  var
                  Form1: TForm1;

                  implementation

                  {$R *.dfm}

                  uses
                  JwaLM, JclSysInfo;

                  function IsNTVersion: Boolean;
                  begin
                  if GetWindowsVersion in [wvWin95, wvWin95OSR2, wvWin98, wvWin98SE, wvWinME] then
                  result := FALSE
                  else
                  result := TRUE;
                  end;

                  function GetAvailableServer(ServerType: DWORD; AStrings: TStrings): NET_API_STATUS;
                  var
                  nRes: Integer;
                  BufPtr: Pointer;
                  nLevel: DWORD;
                  nPrefMaxLen: DWORD;
                  nEntriesRead: DWORD;
                  nTotalEntries: DWORD;
                  nResumeHandle: DWORD;
                  i: Integer;
                  ServerInfo: TServerInfo101;
                  TempBufPtr: PServerInfo101;
                  SIZE_SI_101: Integer;
                  begin
                  // Funktionen stehen nur unter NT/2000/XP zur verfügung
                  if IsNTVersion = True then
                  begin
                  if Assigned(AStrings) = FALSE then
                  raise Exception.Create('Keine Stringlist übergeben'); BufPtr := nil;
                  nPrefMaxLen := $FFFFFFFF;
                  nLevel := 101;
                  nEntriesRead := 0;
                  nTotalEntries := 0;
                  nResumeHandle := 0;
                  SIZE_SI_101 := sizeof(TServerInfo101); AStrings.Clear; repeat
                  nRes := NetServerEnum(nil, nLevel, BufPtr,
                  nPrefMaxLen, nEntriesRead, nTotalEntries,
                  ServerType, nil, @nResumeHandle);
                  result := nRes; if ((nRes = ERROR_SUCCESS) or (nRes = ERROR_MORE_DATA)) and (nEntriesRead > 0) then
                  begin
                  TempBufPtr := PServerInfo101(BufPtr);
                  for i := 1 to nEntriesRead do
                  begin
                  CopyMemory(@ServerInfo, TempBufPtr, SIZE_SI_101);
                  AStrings.Add(ServerInfo.sv101_name);
                  Inc(TempBufPtr, 1);
                  end
                  end;
                  NetApiBufferFree(BufPtr)
                  until nEntriesRead >= nTotalEntries
                  end
                  else
                  begin
                  result := ERROR_NO_BROWSER_SERVERS_FOUND;
                  end;
                  end;

                  procedure TForm1.Button1Click(Sender: TObject);
                  begin
                  GetAvailableServer(SV_TYPE_SQLSERVER, lbxSQLServer.Items)
                  end;

                  end.

                  Dfm-Datei:

                  object Form1: TForm1
                  Left = 320
                  Top = 234
                  Width = 314
                  Height = 320
                  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 lbxSQLServer: TListBox
                  Left = 16
                  Top = 72
                  Width = 265
                  Height = 201
                  ItemHeight = 13
                  TabOrder = 0
                  end
                  object Button1: TButton
                  Left = 24
                  Top = 16
                  Width = 113
                  Height = 25
                  Caption = 'Get SQL-Server'
                  TabOrder = 1
                  OnClick = Button1Click
                  end
                  end
                  </pre&gt

                  Comment


                  • #10
                    Hallo Bernhard,

                    auch mit dem Quelltext habe ich das gleiche Problem. Was mache ich denn falsch, bei der Benutzung der Unit?

                    Gruß

                    Ronal

                    Comment


                    • #11
                      Teil mit deine email mit und ich schick dir alle nötigen Units + Testprojekt

                      Comment


                      • #12
                        Mach einfach das WEAKPACKAGEUNIT weg. Es gibt auch noch andere LM Konversionen. Beispielsweise http://www.delphi-jedi.org/Jedi:APILIBRAR

                        Comment


                        • #13
                          Hallo Robert,

                          das es so einfach ist.

                          Es funktioniert jetzt so wie es soll. Vielen Dank an alle die sich damit beschäftigt haben.

                          Gruß

                          Ronal

                          Comment

                          Working...
                          X