9 Stimmen

Verwendung einer .MDF-SQL-Server-Datenbank mit ASP.NET gegenüber der Verwendung von SQL Server

Ich schreibe gerade eine Website in ASP.NET MVC, und meine Datenbank (die noch keine Daten enthält, sondern nur die richtigen Tabellen) verwendet SQL Server 2008, den ich auf meinem Entwicklungsrechner installiert habe. Ich verbinde mich mit der Datenbank aus meiner Anwendung heraus, indem ich den Server Explorer verwende, gefolgt von LINQ to SQL Mapping.

Sobald ich mit der Entwicklung der Website fertig bin, werde ich sie auf meinen Hosting-Service übertragen, der ein virtueller Hosting-Plan ist. Ich mache mir Sorgen, ob die Verwendung der SQL Server-Einrichtung, die derzeit auf meinem Entwicklungsrechner funktioniert, auf dem Produktionsserver schwierig sein wird, da ich alle Datenbanktabellen über das Hosting-Kontrollpanel importieren muss.

Ich habe festgestellt, dass es möglich ist, eine SQL Server-Datenbank von Visual Studio aus zu erstellen. Sie wird dann im App_Data-Verzeichnis gespeichert.

Meine Fragen sind die folgenden:

  • Ist es sinnvoll, umzuziehen meine SQL Server-DB aus dem SQL Server in das App_Data-Verzeichnis als .mdf Datei?
  • Wenn ja, wie Kann ich es verschieben? Ich glaube, man nennt dies die Detach Befehl, nicht wahr?
  • Gibt es irgendwelche Leistungs-/Sicherheitsfragen die bei einer .mdf Datei wie diese?
  • Würde meine geplante Einrichtung mit einem typischen virtuellen Hosting-Plan gut funktionieren ? Ich hoffe, dass die .mdf Datenbank wird nicht auf die begrenzte Anzahl von SQL Server-Datenbanken angerechnet, die mit meinem Plan erstellt werden können.

Ich hoffe, diese Frage ist nicht zu weit gefasst. Vielen Dank im Voraus!

Hinweis: Ich fange gerade erst mit ASP.NET MVC und all dem an, daher kann es sein, dass ich völlig falsch verstehe, wie das funktionieren soll.

10voto

Remus Rusanu Punkte 280155

Die App_Data MDF ist eine SQL Server-Datenbank, die just-in-time an eine SQL Server-Instanz angehängt wird. Der einzige Weg, auf eine MDF zuzugreifen, ist eine Verbindung zu einem SQL Server. Visual Studio verbirgt, was hinter den Kulissen geschieht, aber Sie verwenden trotzdem eine SQL Server-Instanz. Diese Just-in-Time-Anbindung der MDF funktioniert nur bei SQL Express-Editionen. In SQL Express 2005 würden Sie mit einer Benutzerinstanz enden, siehe Verbindung zu SQL Server Express-Benutzerinstanzen (ADO.NET) . Mit SQL Express 2008 können Sie steuern, ob Sie eine Benutzerinstanz oder eine Dienstinstanz anhängen möchten.

Sie müssen sich bei Ihrem Hosting-Provider erkundigen, ob er diese Datenbank als die un Datenbank im Plan oder nicht. Sie müssen bedenken, dass aus Sicht der Ressourcennutzung das Anhängen einer Datenbank über die Verbindungszeichenfolge (was geschieht, wenn Sie die MDF-Bereitstellungsoption App_Data verwenden) genauso teuer ist wie jede andere Art des Öffnens und Ausführens einer Datenbank, daher wäre ich sehr überrascht zu hören, dass sie es zulassen und nicht auf die Anzahl der im Plan zulässigen Datenbanken angerechnet wird.

5voto

orandov Punkte 3276

Alle SQL Server-Datenbanken sind .mdf Dateien. Die Website .mdf Dateien werden hier gespeichert: * C:\Program Dateien \Microsoft SQL-Server \MSSQL\Data * (Standard-Speicherort).

Es ist richtig, dass Sie die SQL-Datenbank vom Server trennen müssen, um die Datenbank in Ihren App_Data-Ordner zu verschieben. Sie können dies tun, indem Sie in SSMS mit der rechten Maustaste auf die Datenbank klicken.

Die Vorteile des Verschiebens der Datenbank in den App_Data-Ordner sind folgende:

  1. Die Datenbank bleibt dort, wenn sie in der Produktion verwendet wird, und Sie binden die Datenbank dynamisch an einen SQL Server an, wenn Sie eine Verbindung zu ihr herstellen.
  2. Sie möchten die Website zusammen mit der mdf-Datei im Ordner App_Data auf Ihrem Server veröffentlichen (was mit dem ersten Grund zusammenhängt).
  3. Sie können alle Projektdateien an einem Ort aufbewahren. Leicht zu verschieben. Leicht zu sichern.

In Ihrem Szenario, in dem Sie Ihre Datenbank über ein benutzerdefiniertes Bedienfeld hochladen, sehe ich keine Vorteile darin, die Datenbank in den Ordner App_Data zu verschieben. Wenn Sie die Site veröffentlichen, können Sie die DB einfach abkoppeln, die mdf-Datei nehmen und hochladen (Ihr Control Panel hat möglicherweise andere Möglichkeiten, eine DB zu importieren, z. B. SQL-Skripte...).

Um Ihre Fragen direkt zu beantworten...

Ist es sinnvoll, mein SQL zu verschieben? Server-DB aus dem SQL Server in die das App_Data-Verzeichnis als .mdf Datei zu verschieben?

Das glaube ich nicht.

Wenn ja, wie kann ich sie verschieben?

Lösen. Sie können dies tun, indem Sie in SSMS mit der rechten Maustaste auf die Datenbank klicken.

Gibt es irgendwelche Leistungs-/Sicherheits Probleme, die mit einer .mdf-Datei auftreten können auftreten können?

Ich bin mir über die Sicherheitsunterschiede nicht sicher, aber wie bereits erwähnt, ist die Leistung wahrscheinlich besser, wenn die Datenbank an den SQL Server angeschlossen bleibt.

Würde meine geplante Einrichtung mit einer typischen virtuellen Hosting-Plan funktionieren?

Sie müssen prüfen, ob sie Sql-Datenbanken zählen/erlauben, dynamisch angeschlossen zu werden.

Ich hoffe, das hilft. Ich bin kein Experte.

2voto

nubm Punkte 1144

Verwenden Sie nicht App_Data für Ihre Datenbank. Es ist gut für einige schnelle "how to" oder Prototyp, aber es ist nicht gut für die Produktion Server. Es kann Ihnen bei der Wartung eine Menge Ärger bereiten. Ich habe es einmal benutzt und werde es nie wieder tun...

Ja, Leistung. Denn es muss immer die Datenbank angeschlossen werden. Kein großes Problem, wenn Sie eine kleine Website mit mehreren Besuchern pro Tag haben.

Am besten fragen Sie Ihren Hosting-Dienst, ob er dies berücksichtigt oder nicht.

0voto

Jack Punkte 9017

Ehrlich gesagt, beantwortet das vielleicht nicht direkt Ihre Fragen, aber ich habe herausgefunden, dass die Art und Weise, wie Sie es auf dem Hosting (nicht lokal) einrichten, darin besteht, dass Sie Ihre Datenbank zu Ihrem Hosting-Unternehmen verschieben/importieren, das Ihnen dann einen Verbindungsstring zu Ihrem Host/Ihrer Datenbank gibt. Sobald Sie "live" gehen (oder testen, indem Sie Ihre Website auf den Hoster hochladen), ändern Sie den Verbindungsstring in Ihrer web.config auf den von Ihrem Hoster bereitgestellten. Dies ist wahrscheinlich zu vereinfacht, hat aber bei mir immer funktioniert.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X