none
SQL Datenbank erstellen

    Question

  • Hallo,

    Ich hoffe, dass Ihr mir bei meiner Frage helfen könnt, denn das Internet konnte es bislang nicht...

    Eigentlich ist meine Problemstellung einfach:

    • Ich möchte eine SQL-Datenbank (*.mdf) mit "VS 2013 für das Web" erstellen
    • Diese soll nur über die Websites (*.apsx) über Response usw. angesprochen werden könne, also nur der Server darf auf die Datenbank zugreifen (Schutz!)
    • Es soll Tabellen geben, die von Anfang an in der Datenbank sind

    Ich bin für jede Form der Hilfe Dankbar.

    Mit freundlichen Grüßen

    Thomas Roskop, 15

    Tuesday, January 14, 2014 6:24 PM

Answers

  • Hallo Thomas,

    für die Entwicklung reicht ein Heim PC, dort solltest Du aber einen richtigen IIS und keinen IIS Express verwenden. Auch wenn IIS Express schon erheblich besser ist als der ASP.NET Entwicklungswebserver, gibt es dennoch Unterschiede zum richtigen IIS. Daher solltest Du den gleich verwenden, dann entwickelst und testest Du unter Bedingungen, die näher am späteren Livesystem dran sind.

    "Kostenlos" solltest Du dir abschminken. Du achtest sehr auf Sicherheit, da verbietet sich der Einsatz eines kostenlosen Servers/Webhostingpakets. Du solltest einen Provider suchen, der dir sicherheitstechnisch das bietet, was Du brauchst. Das geht nicht für 0, auch nicht für 5 und auch nicht für 20 Euro. Damit Du da was ordentliches bekommst, wirst Du schon "etwas" mehr hinlegen müssen.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    • Marked as answer by Thomas Roskop Wednesday, January 15, 2014 3:17 PM
    Wednesday, January 15, 2014 3:03 PM
    Moderator

All replies

  • Hallo Thomas,

    dafür erstellst Du einfach eine ganz normale Datenbank über entsprechende T-SQL Kommandos oder über das SQL Server Management Studio.

    Die Datenbank auf dem Webserver kannst Du genauso anlegen.

    Was Du mit "Response" ... meinst, weiß ich nicht. Ich denke aber mal, dass Du meinst, dass Du keinen direkten Zugriff auf die Datenbank erlauben willst, sondern nur über deine (noch zu erstellende?) ASP.NET Webanwendung, oder? Falls ja, musst Du auf dem SQL Server ein entsprechendes Login erzeugen und den Benutzer dann für die gewünschte(n) Datenbank(en) so einrichten, dass dieser Zugriff hat.

    Tabellen von Anfang an in der Datenbank zu haben ist zu vage. Wo kommt denn die Datenbank her? Was soll da schon drin sein? Wer definiert das, was drin sein soll? Sollen da später auch weitere Tabellen hinzukommen und wie geht deine Anwendung damit um?

    Fragen über Fragen :)


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Tuesday, January 14, 2014 7:15 PM
    Moderator
  • Danke für die schnelle Antwort,

    • zu dem mit dem Response: Wenn Ich mich nicht Irre, kann man über eine HTTPResponse (http://msdn.microsoft.com/de-de/library/system.web.httpresponse(v=vs.110).aspx) Header angeben, und somit Parameter übergeben.
    • Zu der Tabelle am Anfang: Es kommen eigentlich keine weiteren Tabellen oder Spalten hinzu, deshalb ist die kein Problem.
    • Zu der Sicherheit: Es soll gar keine Nutzer geben, der Zugriff hat. Alles soll die Software machen.

    Eine weitere Unterfrage die Sich mir da Stellt, wäre, ob der Quellcode in c# eigentlich bei einer apsx Seite einsehbar ist, also ob Daten sichtbar sind?

    Danke für alle Antworten.


    (C) Thomas Roskop, 2013

    Tuesday, January 14, 2014 7:52 PM
  • Hallo Thomas,

    zu 1.) Ja, Du irrst dich. Diese Klasse hat rein gar nichts mit einem Datenbankzugriff auf irgendwas, schon gar nicht auf einen SQL Server zu tun. HttpResponse ist eine Klasse, mit der man die Rückantwort einer ASP.NET Resource (bspw. einer Webform, eines Handlers, ...) zusammenstellen kann.

    zu 2.) Ok

    zu 3.) Das geht nicht. SQL Server Express bietet zwar eine Option, die sich "Benutzerinstanzen" nennt, die ist IMO aber komplett unbrauchbar, wenn man auch nur ansatzweise daran denkt, mit ASP.NET zu arbeiten. So gut wie kein Provider bietet diese Option überhaupt an. Wenn Du es selbst machen willst, musst Du ziemlich aufpassen, dass sich mehrere Anwendungen auf dem Server nicht gegenseitig in die Quere kommen und die gleiche Datenbank beanspruchen.

    Wenn Du mit einem richtigen SQL Server arbeitest, brauchst Du einen Benutzer. Ob das nun ein Windowsaccount oder ein SQL Server Benutzer ist, bleibt dir überlassen. Ohne geht's aber nicht, bzw. nicht so, dass Du es sinnvoll einsetzen könntest.

    zu 4.) Der Quellcode ist dann sichtbar, wenn Du ein Websiteprojekt erstellst. Dort wird der Code meist nicht vorkompiliert und steht dann auf dem Webserver zur Verfügung. Ein Webanwendungsprojekt oder auch ASP.NET MVC ... wird so kompiliert, dass die .aspx Dateien noch da sind, die Codebehind Dateien sind aber in eine Assembly kompiliert.

    Allerdings solltest Du dabei beachten, dass man den Quellcode so oder so schnell wiederherstellen kann (mit einigen Abstrichen) wenn man Zugriff auf die Assemblies erhält. Daher solltest Du dir weniger Gedanken um den Quellcode als eher um die Absicherung deines Servers machen :)


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Tuesday, January 14, 2014 8:59 PM
    Moderator
  • Hallo,

    Ich glaube ich habe meine konkrete Frage nicht exakt beschrieben. 

    Folgendes Bild sollte meine Problem (so hoffe ich) erläutern:

    zu beachten ist, dass der rote Pfeil zeigt, dass NUR der Server (eine .apsx-Seite) zugriff auf die Datenbank und andere Resourcen hat. Diese dürfen unter keine Umständen von anderen Programmen als dem Server gelesen werden können.Meine Problemstellung


    (C) Thomas Roskop, 2013

    Wednesday, January 15, 2014 1:48 PM
  • Hallo Thomas,

    deine Frage war schon soweit klar (bis auf das mit dem Benutzer aber das hatte ich dir ja beschrieben).

    Daher ist der aufgezeigte Weg schon der richtige.

    ASP.NET Anwendung
     -> läuft auf Webserver
     -> hat Zugriff auf SQL Server DB, die nur vom Webserver aus erreichbar ist
        -> Hier wird man dann eine Firewall oder ähnliches einrichten, mit der die Zugriffe beschränkt werden.

    Der Client (Browser) greift auf die ASP.NET Anwendung zu, diese liest die Daten aus und liefert sie ganz normal in einer HTML Ausgabe an den Client zurück.

    BTW: Der rote Pfeil sollte wohl eher durchgestrichen sein bzw. aussagen, dass dieser Weg eben nicht möglich sein darf, oder?


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community


    Wednesday, January 15, 2014 2:09 PM
    Moderator
  • Danke für diene Hilfe.

    Mit dem Pfeil, da hast du recht. :)

    Eine Frage am Rande:

    Zum Testen reicht ja der Heim-PC dank IIS Express und VS 2013, später aber bräuchte ich eine Server.

    Gibt es gute Kostenlose Server, die alles nötige Bieten, oder muss man diese Kaufen?


    (C) Thomas Roskop, 2013

    Wednesday, January 15, 2014 2:51 PM
  • Hallo Thomas,

    für die Entwicklung reicht ein Heim PC, dort solltest Du aber einen richtigen IIS und keinen IIS Express verwenden. Auch wenn IIS Express schon erheblich besser ist als der ASP.NET Entwicklungswebserver, gibt es dennoch Unterschiede zum richtigen IIS. Daher solltest Du den gleich verwenden, dann entwickelst und testest Du unter Bedingungen, die näher am späteren Livesystem dran sind.

    "Kostenlos" solltest Du dir abschminken. Du achtest sehr auf Sicherheit, da verbietet sich der Einsatz eines kostenlosen Servers/Webhostingpakets. Du solltest einen Provider suchen, der dir sicherheitstechnisch das bietet, was Du brauchst. Das geht nicht für 0, auch nicht für 5 und auch nicht für 20 Euro. Damit Du da was ordentliches bekommst, wirst Du schon "etwas" mehr hinlegen müssen.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    • Marked as answer by Thomas Roskop Wednesday, January 15, 2014 3:17 PM
    Wednesday, January 15, 2014 3:03 PM
    Moderator
  • Danke


    (C) Thomas Roskop, 2013

    Wednesday, January 15, 2014 3:17 PM
  • Hallo,

    Ich glaube ich habe meine konkrete Frage nicht exakt beschrieben. 

    Folgendes Bild sollte meine Problem (so hoffe ich) erläutern:

    zu beachten ist, dass der rote Pfeil zeigt, dass NUR der Server (eine .apsx-Seite) zugriff auf die Datenbank und andere Resourcen hat. Diese dürfen unter keine Umständen von anderen Programmen als dem Server gelesen werden können.


    (C) Thomas Roskop, 2013

    Hallo Thomas,

    zusätzlich zu den anderen Antworten noch folgendes: "unter keine Umständen von anderen Programmen" ist etwas ungenau. Du meinst sicherlich, "nicht von Unbefugten, sondern ausschließlich von authentifizierten Programmen/Usern". Das ist insoweit eine Standardaufgabe.

    Deine Hauptsorge ist doch aber wohl nicht die vor unberechtigten Zugriffe von innen, sondern von außen, also aus dem INet, oder? Wenn ich da Recht habe, dann wäre das eine klassische Aufgabenstellung: Die DB kommt hinter ein DualHomed-Gateway (Z.B. einen Server mit zwei NICs), erreichbar von außen ist nur eine Applikation, die ihrerseits geprüft und gefiltert mit einer nachgelagerten DB Daten austauscht. Stichwort hier kann z.B. der BusinessConnector sein.

    Gruß

    Johannes Busch

    Thursday, January 16, 2014 9:24 AM