Autor Beitrag
MKSlayer
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 62

SUse / WinXp / Win 2003 server
Turbo Delphi / Borland Builder 4
BeitragVerfasst: Do 26.06.08 13:30 
Ich schreibe ein gerade ein Prog,. welches mich auf nen SQL server verbindet (MS SQL 2005) ohne BDE und ODBC

gibt es irgendeine möglichkeit das es vor dem verbinden erst mal schaut ob auf der gewünschten IP ein SQL server läuft?

oder noch besser gibt die möglichkeit einfach nach SQL servern im Netzwerk zu suchen und zu ermittel ob das nun MYSQL oder MS SQL ist?


Moderiert von user profile iconNarses: Topic aus Sonstiges (Delphi) verschoben am Do 26.06.2008 um 13:39
MSCH
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1448
Erhaltene Danke: 3

W7 64
XE2, SQL, DevExpress, DevArt, Oracle, SQLServer
BeitragVerfasst: Sa 05.07.08 20:27 
so findest du alle SQL Server im Netzwerk:

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
function NetServerEnum(
  const servername    : PWideChar;
  const level         : DWORD;
  const bufptr        : Pointer;
  const prefmaxlen    : DWORD;
  const entriesread   : PDWORD;
  const totalentries  : PDWORD;
  const servertype    : DWORD;
  const domain        : PWideChar;
  const resume_handle : PDWORD
) : NET_API_STATUS; stdcall; external 'netapi32.dll';

function NetApiBufferFree(
  const Buffer : Pointer
) : NET_API_STATUS; stdcall; external 'netapi32.dll';


procedure Tlogin.ScanServers;
const
  MAX_PREFERRED_LENGTH = DWORD(-1); // Alles was da ist raussuchen
  NERR_Success = 0; // Funktion erfolgreich ausgeführt
  SV_TYPE_ALL              = $FFFFFFFF;// Alle Rechner (Server, Workstations)
  SV_TYPE_WORKSTATION        = $00000001;//All LAN Manager workstations
  SV_TYPE_SERVER      = $00000002;//All LAN Manager servers
  SV_TYPE_SQLSERVER            = $00000004;//Any server running with Microsoft SQL Server
  SV_TYPE_DOMAIN_CTRL         = $00000008;//Primary domain controller
  SV_TYPE_DOMAIN_BAKCTRL   = $00000010;//Backup domain controller
  SV_TYPE_TIMESOURCE          = $00000020;//Server running the Timesource service
  SV_TYPE_AFP                     = $00000040;//Apple File Protocol servers
  SV_TYPE_NOVELL       = $00000080;//Novell servers
  SV_TYPE_DOMAIN_MEMBER    = $00000100;//LAN Manager 2.x Domain Member
  SV_TYPE_LOCAL_LIST_ONLY  = $40000000;//Servers maintained by the browser. See the following Remarks section.
  SV_TYPE_PRINT                   = $00000200;//Server sharing print queue
  SV_TYPE_DIALIN          = $00000400;//Server running dial-in service
  SV_TYPE_XENIX_SERVER       = $00000800;//Xenix server
  SV_TYPE_MFPN                   = $00004000;//Microsoft File and Print for Netware
  SV_TYPE_NT            = $00001000;//Windows NT (either Workstation or Server)
  SV_TYPE_WFW                    = $00002000;//Server running Windows for Workgroups
  SV_TYPE_SERVER_NT        = $00008000;//Windows NT Non-DC server
  SV_TYPE_POTENTIAL_BROWSER= $00010000;//Server that can run the Browser service
  SV_TYPE_BACKUP_BROWSER   = $00020000;//Server running a Browser service as backup
  SV_TYPE_MASTER_BROWSER   = $00040000;//Server running the master Browser service
  SV_TYPE_DOMAIN_MASTER               = $00080000;//Server running the domain master Browser
  SV_TYPE_DOMAIN_ENUM       = $80000000;//Primary Domain
  SV_TYPE_WINDOWS    = $00400000;//Windows 95 or later

type
  PSERVER_INFO_101 = ^SERVER_INFO_101;
  SERVER_INFO_101 = record
    dwPlatformId : integer;
    lpszServerName: LPWSTR;
    dwVersionMajor: integer;
    dwVersionMinor: integer;
    dwType: integer;
    lpszComment: LPWSTR;
 end;
var
  pBuffer        : PSERVER_INFO_101;
  pWork          : PSERVER_INFO_101;
  dwEntriesRead  : DWORD;
  dwTotalEntries : DWORD;
  i              : integer;
  dwResult       : NET_API_STATUS;


begin
  Server.Items.Clear; // Server ist listbox
  dwResult := NetServerEnum(nil,101,@pBuffer,MAX_PREFERRED_LENGTH,
  @dwEntriesRead,@dwTotalEntries,SV_TYPE_SQLSERVER,nil,0);
  if dwResult = NERR_SUCCESS then begin
    try
      pWork := pBuffer;
      for i := 1 to dwEntriesRead do begin
        Server.Items.Add(pWork.lpszServerName);
        inc(pWork);
      end;
    finally
      NetApiBufferFree(pBuffer);
    end;
  end;
end;

viel Spass
MSCH

_________________
ist das politisch, wenn ich linksdrehenden Joghurt haben möchte?