verwendetes Datenbanksystem: <SQL>
Guten Abend zusammen,
wieso ist es eigentlich nicht möglich, dass ich eine SQL Datenbank auf einem Netzlaufwerk erstelle und dann alle Clients darauf zugreifen?
Wieso muss die Datenbank tatsächlich auf einem Server erstellt werden? (wo dann tatsächlich SQL Server als DBMS läuft)
Wie kann ich z.B. folgendes realisieren:
Mein eigener PC soll als eine Art "Server" dienen. Hier läuft SQL Server 2008 und auf der lokalen Platte liegt die Datenbank (.mdf).
Nun habe ich den Speicherort freigegeben und auf dem Notebook als "Netzlaufwerk" hinzugefügt.
Wenn ich nun meine Applikation auf dem Laptop und auf diesen Speicherort laufen lasse (Connectionstring angepasst) kommt folgende Exception:
Die Datei 'z:\app\Database.mdf' befindet sich in einem Netzwerkpfad, der für Datenbankdateien nicht unterstützt wird.
Fehler beim Anfügen einer automatisch benannten Datenbank für die Datei z:\app\Database.mdf. Eine Datenbank mit diesem Namen ist bereits vorhanden, die angegebene Datei kann nicht geöffnet werden, oder sie befindet sich in der UNC-Freigabe.
Auf die Datei wird nicht direkt zugegriffen sondern über den SQL Server (nicht der Rechner ist gemeint sondern der Dienst), der die Zugriffe koordiniert.
Es können nicht zwei Dienste auf die gleiche Datei zugreifen, deswegen macht es auch keinen Sinn die Datei auf einem anderen Rechner zu halten.
Datenbankdatei auf einem anderen Rechner als der Datenbankserver-Dienst ist eine ganz schlechte Idee, egal welche Datenbank.
Geschwindigkeit und Sicherheit sind dann beides nicht gegeben.
Die Idee eines Datenbankservers ist doch gerade dass nur dieser auf die physikalische Datenbankdatei zugreift und die Clients mit dem Server kommunizieren (Client/Server-Prinzip).
Früher hat man direkt auf Datenbankdateien im Netzwerk zugegriffen (dBase, Foxpro), das ist aber regelmäßig schiefgegangen (korrupte Dateien, Datenverlust).
Grüße Bernd
Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3
Dir fehlt offensichtlich jeglicher Hintergrund von dem worüber du redest.
Jeder Server ( egal welcher Firma ) ist explizit so ausgelegt das er Daten für andere bereitstellt.
Dabei ist es egal ob das ein File oder DB-Server ist.
Und jeder Hersteller bestimmt was er da wie implementiert.
Bei Datenbankservern geht es um sehr schnelle Bereitstellung und Verwaltung von grossen Datenmengen, wenn man diese Daten über ein Netzwerk anbindet ist schnell schon mal nicht gegeben.
Also macht es keine Sinn das so zu implementieren.
Auch ist die Denke das ein SqlServer eine DB Datei ist falsch ( danke MS für dieses unsägliche "Hilfsmittel" ).
Und natürlich kann der SqlServer die Daten für andere Rechner bereitstellen, dafür ist es doch gedacht.
Binde die DB vernünftig ( ohne AttachDbFile ) an die DB und greife normal drauf zu.
Danke für die Antworten.
Tatsächlich bin ich hier noch bei alten dBase wo man die .dbfs ganz einfach im Netz haben konnte und jeder Client mit einem ADS ausgestattet war.
Ich werde mir jetzt mittels VMWare einen virtuellen SQL Server 2008 aufsetzen und dann damit arbeiten.
Hatte bisher immer nur mit SQL CE oder dBase gearbeitet und von daher fehlt mir hier ein wenig Erfahrung und Wissen.
Danke für die Klarstellungen. 😃
Diesen text habe ich mal geschrieben (ca. 1990 oder so) :
http://sevenc.quasarshop.de/handbuch/fr280000.htm
Grüße Bernd
Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3