none
Visual Studio Express und Datenbanken auf NAS RRS feed

  • Frage

  • Hallo Zusammen,

    ich habe meine Daten alle auf dem NAS liegen, also einer Windowsfreigabe (Windows 7). Auch die Projekte von Visual Studio werden dort gespeichert. Wenn ich nun eine Datenbank einfügen möchte fragt VS ob die zum Projekt kopiert werden soll, was aber leider auf Grund einer Fehlermeldung verhindert wird.

    Ist das eine Einschränkung der kostenlosen Version oder muss man das Programm nur richtig einstellen?
    Ich möchte natürlich auch Programme mit einer Datenbank weiter auf meinem NAS entwickeln.

    Gruß Markus

    Freitag, 7. Januar 2011 10:26

Antworten

Alle Antworten

  • Hallo Markus,

    Visual Studio Express ist für lokal installierte Datenbanken konzipert (insofern ist die Version tatsächlich eingeschränkt)

    Schöne Grüße

    Oliver

    Sonntag, 9. Januar 2011 15:57
  • Hallo Markus,

    wenn es sich bei der "Datenbank" um eine SQL Server (Express) Datenbank handelt,
    so steht dagegen, dass der SQL Server NAS/Netzlaufwerke nicht als hinreichend betrachtet,
    siehe Unterstützung von Datenbankdateien im Netzwerk in SQL Server
    (und dies gilt unabhängig von der Visual Studio Version/Express)

    Und sollten Dir die Daten wichtig sein, Du solltest das nicht leichtfertig übergehen.
    Denn handelt es sich dabei, um eines der Consumer-Produkte aus dem NAS Bereich,
    die oft auf Samba o. ä. aufsetzen, so mögen sie für Media-Bibliotheken etc. hinreichend sein.

    Nicht aber für die Anforderungen  einer transaktionsgesteuerten Datenbank
    und Datenverlust ist nicht ausgeschlossen - d. h. alles weitere auf eigene Gefahr.

    Gruß Elmar

    Montag, 10. Januar 2011 09:36
  • Hallo,

    erst mal vielen Dank für die Antworten. Ich habe mir den Link durchgelesen und konnte zwei Sachen nicht genau orten.

    Ist mein Windows 7 Rechner, der die Windowsfreigabe zur Verfügung stellt, qualifiziert genug um die SQL ExpressDatenbankDatei aufzunehmen und wie bringe ich dem lokalen SQL Server bei, dass er auf der Freigabe speichern darf?

    Habe ich das überlesen oder gibt da noch genauere Infos?

     

    Gruß Markus

     

    Montag, 10. Januar 2011 10:06
  • Hallo Markus,

    Du musst das Ablaufverfolgungsflag -T1807 in die Startparameter aufnehmen,
    wie im KB Artikel beschrieben, siehe auch:
    Vorgehensweise: Konfigurieren von Serverstartoptionen (SQL Server-Konfigurations-Manager)

    Für die Datenbank-Pfade musst Du den UNC Namen der Freigabe verwenden
    (bitte keine Laufwerkbuchstaben, die kennt die SQL Server Instanz nicht)

    Ob das Ganze dann mit Benutzerinstanzen klappt, die Visual C# Express verwendet
    (und für die Designer ausschliesslich möglich, siehe Olivers Aussage)
    habe ich allerdings nie geprüft (denn mir wäre das zu unsicher).

    Gruß Elmar

    • Als Antwort markiert Markus, m-s Freitag, 14. Januar 2011 23:40
    Montag, 10. Januar 2011 10:54
  • Hallo Elmar,

    ich habe jetzt den Startparamater des SQLEXPRESS um ;-T1807 erweitert, habe den Dienst beendet und wieder startet. Habe dann in Visual Studio C# 2010 die Datenbankanbindung versucht auf den UNC Pfad zu ändern, bekommen aber gleich wieder eine Fehlermeldung:

    Das Öffnen von Datenbankdateien auf einer Netzwerkfreigabe wird vom SQL Server Compact nicht unterstützt.
    Parametername: \\nas\Daten

    Zum einen also die Frage, was mache ich falsch, zum anderen aber auch ganz generell? Ich empfinde es als besonders sicher, meine Daten alle im Netzwerk abzulegen. Ich lasse den "Server" täglich Sicherungen durchführen, die Daten sind von meinem System getrennt usw.
    Ich frage mich, wie man ohne Netzwerkfreigaben (Server) professionell Anwendungen entwickelt, aber vermutlich hat man dann einen richtigen Server mit einem SQL Server, oder?

     

    Gruß Markus

     

    Montag, 10. Januar 2011 12:35
  • Den ersten Teil konnte ich mir jetzt selbst beantworten. Ich hatte den falschen Datenbankprovider eingestellt.

    Habe jetzt noch mal eine neue Testanwendung erstellt, eine neue Datenbank loikal mit dem SQLEXPRESS angelegt und auf Nachfrage ins Projektverzeichnis auf dem NAS kopieren lassen. Dort kann ich das jetzt verwenden.

    Bleibt also nur die Unsicherheit aus dem zweiten Teil der Frage.

     

    Gruß Markus

     

    Montag, 10. Januar 2011 13:16
  • Für mich wird das immer Chaotischer. Da merke ich das ich noch immer keinen blassen schimmer habe.

    Beim lesen der verschiedenen Hilfetexte kommen wir arge Zweifel was ich denn nun eigentlich verwenden will. Den SQL compact (SDF) oder eine SQL Datei (MDF).

    Außerdem hatte ich zwar die eine MDF in mein Projekt integrieren können und auch eine Tabelle anlegen usw. aber nach dem nächsten Öffnen gibt es Fehlermeldung, Datei kann nicht geöffnet werden weil benutzt. Was aber letztendlich darin begründet scheint, dass der Pfad für die MDF immer wieder vom UNC Pfad auf den Laufwerksbuchstaben geändert wird (ohne mein Zutun, wohlgemerkt :)
    Zumindest kann die Datenbankdatei im Datenbankexplorer wieder öffnen, wenn ich die Verbidngung entsprechend anpasse.

    So gesellt sich also zu meiner eigentlichen Frage, wie ich Visual Studio überrede meine Datenbank auf dem NAS zu akzeptieren noch die viel grundsätzlichere Frage.


    Was will ich denn für einen Datenbankprovider nutzen. Ich möchte eine Anwendung schreiben, die vielleicht 10 oder 20 Tabellen verwendet. Die Daten enthalten Text und es sind 100.000 Datensätze/Tabelle als max. geplant.
    Zumindest vorerst soll es eine Einzelplatz Anwendung werden. Also ein Benutzer erfasst und ändert lokal auf seinem Rechner Daten.

    Wäre schön wenn Ihr sone Anfängerfrage verständlich :) beantworten könntet.

    Montag, 10. Januar 2011 17:49
  • Hallo Markus,

    die Provider richten sich nach dem Datenbanksystem und nicht unbedingt nach der komplexität die du verarbeiten möchtest.

    Der Provider für den SQLServer befindet sich im Namespace: System.Data.SqlClient (http://msdn.microsoft.com/de-de/library/8t72t3k4.aspx). Hier findest du alle Typen die notwendig sind, um mit dem SQL Server arbeiten zu können.

    Viele Grüße
    Holger M. Rößler

    Montag, 10. Januar 2011 18:31
  • Hallo Markus,

    SQL Server Compact hat nur einen Teil des Namens mit dem "richtigen" SQL Server gemein -
    wohl mal aus Marketinggründen so gewählt.
    Technisch gesehen ist es eine dateibasierte Einzelplatz-Datenbank, entfernt vergleichbar mit Microsoft Access.
    Da sie einen geringen Speicherverbrauch hat ist auch für Mobilgeräte verfügbar.

    Sie eignet sich für kleinere Datenmengen (4 GB ist das theoretische Maximum für eine Datei,
    allerdings sollte man darunter bleiben, und ab ca. 512 MByte aufteilen)

    Der Microsoft SQL Server wiederum ist eine skalierbare Datenbank, wovon die
    Express Edition die kleinste (und kostenfreie) Ausgabe ist (ein Upgrade ist möglich).
    Maximale Datenbank-Größe ist 10 GB bei Express 2008 R2 (ältere nur 4GB) ,
    bei den Vollversionen im mehrstelligen Terabyte-Bereich (auch praktisch eingesetzt).

    Zum Zugriff:
    Da es sich um unterschiedliche System handelt, verwenden sie auch unterschiedliche Provider.
    Der SQL Server wird mit den Klassen mit dem Präfix "Sql"  us System.Data.SqlClient bedient,
    die mit jeder .NET Installation verfügbar sind.

    Für SQL Server Compact wiederum ist der System.Data.SqlServerCe-Namespace zuständig
    und die Klassen tragen das Präfix "SqlCe". Die Treiber werden mit Visual Studio Express mitinstalliert,
    für andere Rechner ohne Visual Studiomusst Du jedoch selbst für die Verteilung sorgen.
    Die Treiber sind auch separat erhältlich, siehe Microsoft SQL Server Compact 3.5 Service Pack 2 for Windows Desktop

    Beim SQL Dialekt verwendet Compact ein Subset des TRANSACT-SQL vom SQL Server
    und ist insofern austauschbar - allerdings gibt es auch Einschränkungen, für mehr siehe Online-Dokumentation

    Zur Auswahl: Wenn "vorerst Einzelplatz" heisst, das auch eine spätere Mehrplatznutzung geplant/angedacht ist,
    so solltest Du SQL Server Express einsetzen, denn Compact ist nicht Netzwerk-/Mehrplatzfähig.

    Was NAS angeht: Der SQL Server stellt höhere Anforderungen an die Netzwerk-Anbindung.
    Und im allgemeinen werden dafür SAN Geräte verwendet (auf die Buchstabenreihenfolge kommt es dabei an),
    die das sicherstellen und von Microsoft abgenommen werden - siehe auch den KB Artikel.
    Bei den NAS Geräten, die in der Preislage von einigen hundert Euro im Groß- und Einzelhandel
    angeboten werden, ist das i. a. nicht der Fall.
    Es kann zwar gut gehen, solange die Anforderungen gemässigt sind, eine Garantie übernimmt aber niemand.

    Willst Du das Risiko nicht in Kauf nehmen, wäre es sinnvoller, die Datenbank auf einer lokalen Festplatte zu installieren.
    Und die Sicherungsmöglichkeiten des SQL Servers zu nutzen um die Datenbank regelmässig auf dem NAS zu sichern,
    was auch während des laufenden Betriebs (Online) möglich ist.
    Da der SQL Server selbst netzwerkfähig ist, kann auch dann von mehreren Rechner darauf zugegriffen werden.

    Die Visual Studio Express Editionen wiederum erlauben über die Designer-Oberflächen
    nur einen Zugrif auf lokale Datenbanken, woraus sich auch das "Umbiegen" erklären dürfte.
    Über .NET selbst spielt das keine Rolle - dort kann man auf beliebige Quellen zugreifen -,
    aber es behindert nunmal die Entwicklung (gerade am Anfang).
    Für mehr sind die größeren (kostpflichtigen) Visual Studio Editionen gedacht
    (für umsonst gibt es nunmal nicht alles).

    Gruß Elmar

     

    Montag, 10. Januar 2011 20:33
  • Hallo Markus,

    Zur Auswahl: Wenn "vorerst Einzelplatz" heisst, das auch eine spätere Mehrplatznutzung geplant/angedacht ist,
    so solltest Du SQL Server Express einsetzen, denn Compact ist nicht Netzwerk-/Mehrplatzfähig.

    Willst Du das Risiko nicht in Kauf nehmen, wäre es sinnvoller, die Datenbank auf einer lokalen Festplatte zu installieren.
    Und die Sicherungsmöglichkeiten des SQL Servers zu nutzen um die Datenbank regelmässig auf dem NAS zu sichern,
    was auch während des laufenden Betriebs (Online) möglich ist.
    Da der SQL Server selbst netzwerkfähig ist, kann auch dann von mehreren Rechner darauf zugegriffen werden.

    Gruß Elmar


    Hallo Elmar,

    erst mal vielen Dank für die Antwort. Ich werde mir das alles ein paar mal durchlesen und hoffe dann entscheiden zu können welche Datenbank ich wähle.

    Vorerst Einzelplatz bedeutet in diesem Fall, dass ich überlege später einen Sync zu ermöglichen. Also das die Leute auf einem Desktop PC und auf einem Laptop die Daten verwalten können und dann abgleichen, entweder über Netzwerk oder über nen USB Stick oder sowas. Aber mal sehen ob das Sinn macht und gewünscht wird weiß ich noch nicht.

    Ich habe mir gestern die halbe Nacht lang eine Software geschrieben (wenn man die "vier Zeilen" so nennen will) die von einem ausgewählten lokalen Projekt eine Sicherung auf dem NAS anlegt. Natürlich dann immer in einen neuen Ordner. Aus Ahnungslosigkeit aber einfach nur als Kopie der Ordner, also Offline. Zumindest kann ich so, nach oder vor jedem wichtigen Schritt VS beenden, das aktuelle Projekt aus der Liste in meiner Software wählen und ne neue Sicherung anlegen.

    Gruß
    Markus

    Dienstag, 11. Januar 2011 14:56
  • Hallo Markus,

    auch wenn ich Deine Entscheidung nicht weiter verkomplizieren möchte:

    Willst Du die Daten zwischen unabhängigen Rechnern synchronisieren, wäre eine Kombination aus beidem sinnvoller.
    Für SQL Server Compact gibt es eine Microsoft Synchronization Services für ADO.NET Ergänzung,
    die wiederum eine Synchronisation mit einem SQL Server erleichtert.

    Zum Verwalten von Projekten:
    Sinnvoller als alles manuelle Kopieren ist eine Sourcecode Versionsverwaltung .
    Microsoft hat in den größeren Editionen den Team Foundation Server.
    Es geht aber auch mit freier Software wie Subversion .

    Gruß Elmar

    Dienstag, 11. Januar 2011 17:18
  • Hallo Elmar,

    So wie es aussieht werde ich wohl die Anwendung das eine oder andere mal neu schreiben müssen :)

    Ich habe mich vor Deinem letzten Posting dann entschieden gehabt mit SQL Express zu arbeiten.
    So schleppend wie ich momentan voran komme macht das aber wahrscheinlich auch kein Problem, wenn ich dann in zwei Jahren die Anwendung noch mal neu mache :)

    Subversion habe ich mir angesehen und die Frustration wuchs weiter :)
    Ich verstehe immer nur die Hälfte, von Subvision auch. Na, ich werde mir das weiter ansehen, irgendwann werde ich schon kapieren wie alles funktioniert.

     

    Gruß Markus

     

    Donnerstag, 13. Januar 2011 23:49
  • Hallo Markus,

    anfangs kann man von den Möglichkeiten schon mal erschlagen werden - da heisst es sich rechtzeitig ducken ;-)

    Da Du nur wenig zur geplanten Anwendung geschrieben hast - und der Einstieg über Hardware/Technik erfolgte -,
    sind die Ratschlägen etwas allgemeiner ausgefallen, was die Entwicklung angeht.

    Grundsätzlich machst Du mit SQL Server (Express) nichts verkehrt -
    von dort aus kann man Daten in alle Richtungen verschicken,
    und wenn nötig selbst in die Wolken => SQL Azure ;-)

    Ich würde Dir empfehlen, die Technik ein wenig ruhen zu lassen, und zunächst einen Anwendungsentwurf zu machen.
    Sobald die Anforderungen konkretere Formen angenommen haben, lässt sich das eine oder andere besser diskutieren.
    Und manches löst sich dann von selbst auf (hoffentlich ;-)

    Gruß Elmar

     

    Freitag, 14. Januar 2011 10:18
  • Hallo Elmar,

    na ich bin ja erst mal beruhigt, dass ich mit dem SQL Express nicht unbedingt einen Fehler gemacht habe.

    Ich habe so ca. in den letzten 14 Tage die Anwendung geplant. Habe artig Diagramme in UML gemalt :)
    Habe die Tabellen geplant usw.

    So einfache Sachen die ne Kundenliste habe ich jetzt auch in der Mache bzw. mehr oder weniger fertig.

    Leider gibt es Teile in meinem Projekt, wo ich so gar nicht weiß wie ich vorgehen soll, dass ich vermutlich auch mit der Planung der Tabellen teilweise noch mal anfangen muss.

    Na mal sehen, ich habe jetzt eine der, für mich, schweren Fragen an meinen Fernlehrer geschickt. Sollte ich eine Antwort bekommen, hoffe ich doch auch wieder einen großen Schritt in der Planung abschließen und dann umsetzen zu können.

    Schon irgendwie peinlich. Da habe ich die letzten 11 Monate im Fernstudium C# gelernt und bin immer noch blutigster Anfänger.
    Na auf jeden Fall mal zwischen drin "Vielen Dank".

    Auch wenn ich nicht immer gleich mit komme, bin ich sehr froh das Menschen wie Du hier antworten und man so Schritt für Schritt (wenns auch manchmal sehr kleine Schritte sind) voran kommt.

     

    Gruß Markus

     

    Freitag, 14. Januar 2011 15:05