![]() |
Datenbank: MS SQL Server Express • Zugriff über: Ado
Connection zu SQL Server Express über lokales Netzwerk..Wie?
Hallo Wissende,
ich habe mir gestern mal den kostenlosen MS SQL Server Express gezogen und installiert. Nach anfänglichen Schwierigkeiten läuft das Ding nun und ich kann auch Lokal mit folgendem Code eine Verbindung herstellen:
Delphi-Quellcode:
Ich habe natürlich sofort in all der Euphorie versucht mit der Applikation von einem anderen PC aus mich mit dem Server zu verbinden. Leider klappt das so nicht! Ich habe mal bei ConnectionString.com geschaut. Dort steht aber nur, dass man bei DataSource entweder den Servernamen oder nen Netzwerkpfad eingeben muss. Ich habe das dann mal so umgeschrieben.
ADOConnection1.ConnectionString:= 'Provider=MSDataShape;Data Provider=SQLOLEDB;Data Source=PCName\ServerName;Initial Catalog=DBNAME;User ID=BenutzerName;Password=Pass;';
ADOConnection1.Connected:=true;
Delphi-Quellcode:
Leider hat das nicht geklappt. Liegt es am Server oder der Serverkonfiguration oder am ConnectionString?
ADOConnection1.ConnectionString:= 'Provider=MSDataShape;Data Provider=SQLOLEDB;Data Source=\\PCName\PCName\ServerName;Initial Catalog=DBNAME;User ID=BenutzerName;Password=Pass;';
ADOConnection1.Connected:=true; |
Re: Connection zu SQL Server Express über lokales Netzwerk..
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Tom,
ich verwende in ADO nur extern konfigurierte Connections. Microsoft hat dazu den Universal Data Link erfunden. Wenn du das noch nicht kennst, dann kopiere dir die Textdatei aus dem Anhang in dein Projektverzeichnis und benenne sie entprechend um. Danach kannst über Doppelklick in der Shell die Konfiguration vornehmen. Der Servername ist ein DNS-Name und kein UNC-Name wie in deinem Beispiel. Benutzen kannst du die UDL-Datei in deinem Programm dann so (D7):
Delphi-Quellcode:
Grüße vom marabu
begin
fn := ChangeFileExt(ParamStr(0), '.udl'); with ADOConnection do ConnectionString := Format('FILE NAME=%s', [fn]); // ... end; Edit: Bin mit dem Anhängen irgendwie nicht zurecht gekommen. Scheinbar werden UDL-Dateien als potentiell schädlich angesehen, deshalb habe ich den Namen jetzt verstümmelt. |
Re: Connection zu SQL Server Express über lokales Netzwerk..
Hallo Marabu,
danke für Deine Antwort. Leider fehlte die TextDatei im Anhang. :roll: Kannst Du bitte mal nachreichen? |
Re: Connection zu SQL Server Express über lokales Netzwerk..
Provider=MSDataShape? Also ich verwende einfach den SQLOLEDB Provider für SQL-Server
Delphi-Quellcode:
Beachte, das Du Username, Password, Server-Computernamen und den Datenbanknamen noch einsetzen musst.
'Provider=SQLOLEDB.1;Password=<myPassword>;'+
'Persist Security Info=True;User ID=<MyUser>;'+ 'Initial Catalog=<MyDatabaseName>;'+ 'Data Source=<MyServerComputerName>;'+ 'Use Procedure for Prepare=1;Auto Translate=True;'+ 'Packet Size=4096;Workstation ID=<MyWorkstationName>;'+ 'Use Encryption for Data=False;Tag with column collation when possible=False'; |
Re: Connection zu SQL Server Express über lokales Netzwerk..
Also ich habe nun die UDL-Datei auf den Client kopiert und dort mal ausgeführt. Es öffnete sich nun der Dialog "Datenverknüpfungseigenschaften", in dem ich unter Punkt 1 den Servernamen auswählen sollte. Erfreulicherweise stand dort mein Server schon drin. Ich habe dann noch den Benutzernamen und das Kennwort eingegeben und wollte dann mal die Verbindung testen.
NIX DA! Fehler beim Testen der Verbindung durch einen Fehler beim Initialisieren des Providers. [DBNMPNTW] Der angegebene SQL-Server wurde nicht gefunden. Wie geht das denn? Ich konnte ihn doch oben auswählen! Ich habe dann mal bei der Serverkonfiguration die Öberflächenkonfiguration für Dienste und Verbindungen geöffnet und dort dann bei Remoteverbindungen auf TCP/IP und Named Pipes umgestellt und den Server neu gestartet. Leider auch nix. Was könnte es jetzt noch sein, was mir die Verbindung nicht zulässt? //Edit @ alzaimar Habe meinen Code geändert und so funktioniert es auch. Danke! |
Re: Connection zu SQL Server Express über lokales Netzwerk..
Gut!
Wie ist das in SQL 2005. Bedenke, das Du im Server und auf den Clients die gleiche Clientlibrary installiert und eingerichtet haben musst. Wie greifst Du auf den Server zu? UDP/TCP/Named Pipes? Egal was Du nimmst, es muss auf allen PC gleich eingerichtet sein (Portnummer, Pipename etc.) Normalerweise ist es das auch, aber wenn nicht, sucht man sich einen Wolf. Die Tatsache, das ein SQL-Server gefunden wurde, heißt noch nicht, das man mit ihm auch reden kann... Das Auffinden aller SQL-Server ist eine Windows-API Funktion. |
Re: Connection zu SQL Server Express über lokales Netzwerk..
Hallo!
Danke für Deine Antwort. Auf den Clients habe ich noch gar nichts eingerichtet. Ich habe mir nun extra die Hilfe von 120 MB heruntergeladen und wurde leider enttäuscht, da dort nichts zu finden ist. Kannst Du bitte noch etwas ins Detail gehen, was ich auf den Clients wie einrichten muss? Ich habe am Server, wohl eher aus Verzweiflung alles auf TCP/IP und Named Pipes eingestellt, weil ich einfach alles aufgemacht haben wollte, damit der Client "reinkommt". Was muss ich also auf dem Client Kopieren oder installieren, damit er per TCP auf den Server zugreifen kann? Netzwerktechnisch ist alles fein. Die Clients sehen den Server als Rechner und auch den Server selbst. Ich muss zugeben, dass ich das hier zu ersten mal mache und mich habe überrumpeln lassen, dies auf SQL-Server-Basis zu tun, da Access wohl nicht geeignet scheint für einen gleichzeitigen Zugriff von mehr als 20 Clients... |
Re: Connection zu SQL Server Express über lokales Netzwerk..
Is schon richtig. Access geht noch nicht mal bei 5 Clients mehr richtig.
Mit Named Pipes gab es mal Probleme (mit ADO und SQL 2000). Seitdem verwende ich nur noch TCP/IP über Port 1433. Versuch das mal: Tu so, also ob Du eine ODBC-Verbindung zum SQL-Server einrichten willst. Der Treiber 'SQL-Server' müsste so ziemlich der letzt in der Liste sein. Wenn Du dem Kind einen Namen gegeben hast, und den Server ausgewählt hast, sollte auf der nächsten Seite vom Einrichtungsdialog ein Knopp 'Clientkonfiguration' erscheinen. Hier kann man dann die SQL-Zugriffslibraries einrichten (ist doch logisch, das man das unter ODBC macht, obwohl man über OLE-DB drauf zugreift). |
Re: Connection zu SQL Server Express über lokales Netzwerk..
Der SQL Server 2005 Express erwartet (zumindest bei meinen Installationen) immer als Servernamen den Namen des Servers und anschließend mit einem Backslash getrennt den Namen "SQLEXPRESS", also: "MeinServer\SQLEXPRESS" damit funktioniert es dann mit ADO und dem "Microsoft OLE DB Provider for SQL Server".
Grüße Michael |
Re: Connection zu SQL Server Express über lokales Netzwerk..
Bei der Vorgänger-Version (MSDE) war eine ausführliche Installationsanleitung dabei. Wenn ich mich recht erinnere, dann gab es zwei unterschiedliche Namenskonventionen, eine für single instance und eine für multiple instance Installationen. Außerdem hat Tom doch in seinem ersten Beitrag schon alle Parameter für einen erfolgreichen Verbindungsaufbau gehabt. Sein Problem war ursprünglich, dass er sich nicht von einer anderen Workstation aus mit dem SQL-Server verbinden konnte. Und jetzt geht auf einmal gar nichts mehr? Seltsam.
Grüße vom marabu |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:58 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz