AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Automatische verbindung mit lokalem MSSQL Server
Thema durchsuchen
Ansicht
Themen-Optionen

Automatische verbindung mit lokalem MSSQL Server

Ein Thema von daniel71 · begonnen am 27. Sep 2007 · letzter Beitrag vom 6. Jan 2008
Antwort Antwort
daniel71

Registriert seit: 26. Sep 2007
38 Beiträge
 
Delphi XE Professional
 
#1

Automatische verbindung mit lokalem MSSQL Server

  Alt 27. Sep 2007, 22:29
Datenbank: MSSQL • Version: 2005 • Zugriff über: ADOConnection
Hallo

Ich scheribe ein tool das aus einer bestehenden datenbank von einem anderen programm ein dispo zeichnet.
Dieses programm (zum programmieren einer PBX) überprüft bei der installationsrutine ob schon ein sql server installiert ist, wenn nicht, wird zuerst der MS SQLExpress 2005 installiert. Ich weis also nicht welche version des MSSQL benutzt wird.

Ich habe versucht mit diesem skript die verfügbaren server zu ermitteln:
ListView SQL-Server auflisten

Dies gibt mir z.B "LAPTOP" zurück, um mit der ADOConnection eine verbindung per ConnectionString aufzubauen brauche ich aber "LAPTOP\MSSMLBIZ" oder "PC\SQLEXPRESS" (computername\servername)oder wie auch immer die verschiedenen MSSQL server benannt sind.

Da es sich nur um lokale SQL Server handelt funktioniert auch "localhost\MSSMLBIZ"

Auch wenn ich über das "Datenverknüpfungseigenschaften" fenster den server auswähle (dropdown) und danach die verbindung teste funktioniert es erst wenn ich "\MSSMLBIZ" dazufüge.

Gibt es eine ander möglichkeit sowas zu automatisieren oder mache ich da etwas falsch?

Ich benutze die windows-authentifizierung.
Ich möchte verhindern dass die benutzer meines tools etwas am SQL server rumbasteln müssen.


Vielen dank für eine antwort.
Gruss Daniel
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: Automatische verbindung mit lokalem MSSQL Server

  Alt 28. Sep 2007, 06:28
Herzlich willkommen in der Delphi-PRAXiS, Daniel.

Nur wenn du mehrere Instanzen von MSSQLSERVER installierst wird der InstanceName benötigt. Die erste bzw. default Installation hat keinen Instanznamen, den steuerst du erst bei einem weiteren Setup über den Parameter INSTANCENAME bei. Im Readme*.html des Original-Setup findest du Erläuterungen zu diesem Thema. Hast du schon versucht dich einfach ohne InstanceName mit der Maschine zu verbinden?

Freundliche Grüße vom marabu
  Mit Zitat antworten Zitat
daniel71

Registriert seit: 26. Sep 2007
38 Beiträge
 
Delphi XE Professional
 
#3

Re: Automatische verbindung mit lokalem MSSQL Server

  Alt 28. Sep 2007, 06:49
Hallo

Erstmal vielen Dank für die schnelle Antwort.

Ich habe noch nicht versucht ohne instancenam zu verbinden, werde ich heute abend gleich mal versuchen.
Jedenfals wenn ich einen verbindungstest über das "Datenverknüpfungseigenschaften" fenster mache funktioniert der erst wenn ich die instanz auch angebe.

Das readme werde ich natürlich auch noch durchlesen

Da ich aber nicht weiss ob die user meines tools mehrer instanzen haben, muss ich diesen irgendwie ermitteln.
Gibt es da eine möglichkeit?

Gruss Daniel
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

Re: Automatische verbindung mit lokalem MSSQL Server

  Alt 28. Sep 2007, 07:03
Laut ReadMe musst du die Services auslesen und nach MSSQLSERVER bzw. MSSQLSERVER$INSTANCENAME suchen, wobei INSTANCENAME variabel ist.
  Mit Zitat antworten Zitat
daniel71

Registriert seit: 26. Sep 2007
38 Beiträge
 
Delphi XE Professional
 
#5

Re: Automatische verbindung mit lokalem MSSQL Server

  Alt 1. Okt 2007, 21:06
Hallo marabu

Klapt auch ohne die Istanz des SQL Servers anzugeben.


Nochmals vielen Dank für deine Hilfe

Gruss Daniel
  Mit Zitat antworten Zitat
daniel71

Registriert seit: 26. Sep 2007
38 Beiträge
 
Delphi XE Professional
 
#6

Re: Automatische verbindung mit lokalem MSSQL Server

  Alt 6. Jan 2008, 23:17
Hallo

Das mit der Verbindung ohne Instanzangabe hatte damals doch nicht funktioniert, und ich möchte hier meine Lösung niemandem vorenthalten. Es gibt sicherlich bessere Wege, als die, die ich gefunden habe, aber sie funktioniert.

Auch mit NetServerEnum fand ich den Instanzname nicht.

Mit den Diensten Auslesen kam ich auch auf keinen grünen Zweig.

Durch auslesen der Registry:
Delphi-Quellcode:
Uses
 Registry, ComCtrls;
--------------------------------

procedure TForm1.FormCreate(Sender: TObject);
var Reg: TRegistry;
    sList: TStringList;
    i: integer;
    Item: TListItem;
    Column: TListColumn;
begin
  ListView1.ViewStyle := vsReport;
  ListView1.Columns.Clear;
  Column := ListView1.Columns.Add;
  Column.Caption := 'Name';
  Column.AutoSize := true;
  Column := ListView1.Columns.Add;
  Column.Caption := 'Wert';
  Column.AutoSize := true;
  Reg := TRegistry.Create;
  Reg.RootKey := HKEY_LOCAL_MACHINE;
  sList := TStringList.Create;
  try
    if Reg.OpenKey('Software\Microsoft\Microsoft SQL Server\Instance Names\SQL',false) then
      begin
        Reg.GetValueNames(sList);
        for i := 0 to sList.Count - 1 do
          begin
            Item := ListView1.Items.Add;
            Item.Caption := sList[i];
            Item.SubItems.Add(Reg.ReadString(sList[i]));
          end;
        Reg.CloseKey;
      end;
  finally
    Reg.Free;
    sList.Free;
  end;
end;
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:29 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz