Verwenden einer .MDF SQL Server-Datenbank mit ASP.NET Versus mit SQL Server

8

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

Sobald ich mit der Entwicklung der Site fertig bin, werde ich sie zu meinem Hosting-Service verschieben, bei dem es sich um einen virtuellen Hosting-Plan handelt. Ich bin besorgt darüber, ob die Verwendung des SQL Server-Setups, das derzeit auf meinem Entwicklungscomputer ausgeführt wird, auf dem Produktionsserver schwierig sein wird, da ich alle Datenbanktabellen über das Hoststeuerungsfeld importieren muss.

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

Meine Fragen sind die folgenden:

  • Ist es sinnvoll, meine SQL Server DB aus SQL Server heraus und in das Verzeichnis App_Data als .mdf Datei?
  • zu verschieben
  • Wenn ja, wie kann ich es verschieben? Ich glaube, das heißt der Befehl Detach , nicht wahr?
  • Gibt es Performance- / Sicherheitsprobleme , die bei einer .mdf -Datei auftreten können?
  • Würde meine beabsichtigte Konfiguration mit einem typischen virtuellen Hosting-Plan funktionieren? Ich hoffe, dass die .mdf -Datenbank nicht gegen die begrenzte Anzahl von SQL Server-Datenbanken zählt, die mit meinem Plan erstellt werden können.

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

Hinweis: Ich beginne gerade mit ASP.NET MVC und all dem, also könnte ich völlig falsch verstehen, wie das funktionieren soll.

    
Maxim Zaslavsky 13.04.2010, 17:21
quelle

4 Antworten

9

Die App_Data MDF ist eine SQL Server-Datenbank, die just-in-time an eine SQL Server-Instanz angehängt wird. Die einzige Möglichkeit, auf eine MDF zuzugreifen, besteht in der Verbindung mit einem SQL Server. Visual Studio blendet aus, was hinter den Kulissen passiert, aber Sie verwenden immer noch eine SQL Server-Instanz. Dieser Just-in-Time-Anhang der MDF funktioniert nur in SQL Express-Editionen. In SQL Express 2005 würden Sie mit einer Benutzerinstanz enden, siehe Mit SQL Server Express-Benutzerinstanzen verbinden (ADO. NET) . Mit SQL Express 2008 können Sie steuern, ob Sie eine Benutzerinstanz wünschen oder an die Dienstinstanz anhängen möchten.

Sie müssen sich bei Ihrem Hosting-Provider erkundigen, ob sie diese Datenbank als one -Datenbank im Plan zählen oder nicht. Sie müssen daran denken, dass das Anhängen einer Datenbank anhand der Verbindungszeichenfolge (was bei Verwendung der MDF-Bereitstellungsoption App_Data geschieht) aus Sicht der Ressourcennutzung genauso teuer ist wie jede andere Art, Datenbank zu öffnen und auszuführen Ich wäre sehr überrascht zu hören, dass sie es erlauben und nicht gegen die Anzahl der im Plan erlaubten Datenbanken zählen.

    
Remus Rusanu 13.04.2010, 17:44
quelle
5

Alle SQL Server-Datenbanken sind .mdf -Dateien. Die Dateien .mdf sind hier gespeichert: * C: \ Programme \ Microsoft SQL Server \ MSSQL \ Daten * (Standardspeicherort).

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 das tun, indem Sie mit der rechten Maustaste auf die Datenbank in SSMS klicken.

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

  1. Die Datenbank wird dort beibehalten, wenn sie in der Produktion verwendet wird, und Sie verbinden die Datenbank dynamisch mit einem SQL Server, wenn Sie eine Verbindung herstellen.
  2. Sie möchten die Website zusammen mit dem mdf im Ordner App_Data auf Ihrem Server veröffentlichen (zusammen mit dem ersten Grund).
  3. Bewahren Sie alle Projektdateien an einem Ort auf. Leicht zu bewegen. Einfach zu sichern.

In Ihrem Szenario, in dem Sie Ihre Datenbank über ein benutzerdefiniertes Steuerungsfeld hochladen, sehe ich keine Vorteile darin, die Datenbank in den Ordner App_Data zu verschieben. Wenn Sie die Site veröffentlichen, können Sie einfach die Datenbank trennen, die MDF-Datei abrufen und hochladen (Ihre Systemsteuerung kann andere Möglichkeiten haben, eine DB zu importieren, beispielsweise SQL-Skripte ...).

Um Ihre Fragen direkt zu beantworten ...

  

Macht es Sinn mein SQL zu verschieben?   Server DB aus SQL Server und in   das Verzeichnis App_Data als .mdf   Datei?

Das glaube ich nicht.

  

Wenn ja, wie kann ich es verschieben?

Trennen. Sie können das tun, indem Sie mit der rechten Maustaste auf die Datenbank in SSMS klicken.

  

Gibt es Leistung / Sicherheit?   Probleme, die bei einer MDF-Datei auftreten können   so?

Ich bin nicht sicher über Sicherheitsunterschiede, aber wie bereits erwähnt, gibt es wahrscheinlich eine bessere Leistung, wenn die Datenbank an den SQL Server angeschlossen bleibt.

  

Würde meine beabsichtigte Einrichtung mit einem OK funktionieren?   typischer virtueller Hosting-Plan?

Sie müssten prüfen, ob sie SQL-Datenbanken dynamisch zählen / zulassen.

Ich hoffe, das hilft. Ich bin kein Experte.

    
orandov 13.04.2010 17:51
quelle
1

Verwenden Sie App_Data nicht für Ihre Datenbank. Es ist gut für einige schnelle "wie" oder Prototypen, aber es ist nicht gut für den Produktionsserver. Dies kann bei der Wartung zu Problemen führen. Ich habe es einmal und nie wieder benutzt ...

Ja, Leistung. Weil es immer die db anhängen muss. Kein großes Problem, wenn Sie ein kleines Web mit mehreren Besuchern pro Tag haben.

Es wäre besser, Ihren Hosting-Service zu fragen, ob sie ihn zählen oder nicht.

    
nubm 13.04.2010 17:44
quelle
0

Ehrlich gesagt, kann dies Ihre Fragen nicht direkt beantworten, aber ich habe festgestellt, dass die Art und Weise, wie Sie es auf Hosting (nicht lokal) einrichten, Ihre Datenbank in Ihr Hosting-Unternehmen verschieben / importieren, das Ihnen dann eine Verbindungszeichenfolge zu Ihrer Host / db. Sobald Sie "live" gehen (oder testen, indem Sie Ihre Site auf den Host hochladen), ändern Sie die Verbindungszeichenfolge in die von Ihrem Host bereitgestellte Zeichenfolge in Ihrer web.config. Dies ist wahrscheinlich zu vereinfacht, hat aber immer für mich funktioniert.

    
Jack 13.04.2010 21:33
quelle