2010-04-13 36 views
8

Actualmente estoy escribiendo un sitio web en ASP.NET MVC, y mi base de datos (que aún no tiene ningún dato, solo tiene tablas correctas) utiliza SQL Server 2008, que he instalado en mi máquina de desarrollo. Me conecto a la base de datos fuera de mi aplicación usando el Explorador del servidor, seguido de la asignación LINQ a SQL.Usando una base de datos .MDF SQL Server con ASP.NET versus usando SQL Server

Una vez que termine de desarrollar el sitio, lo moveré a mi servicio de alojamiento, que es un plan de alojamiento virtual. Me preocupa si usar la configuración de SQL Server que está trabajando actualmente en mi máquina de desarrollo será difícil de hacer en el servidor de producción, ya que tendré que importar todas las tablas de la base de datos a través del panel de control de hosting.

He notado que es posible crear una base de datos de SQL Server desde Visual Studio. Luego se almacena en el directorio App_Data.

Mis preguntas son las siguientes:

  • ¿Tiene sentido para mover mi DB de SQL Server de SQL Server y en el directorio App_Data como un archivo .mdf?
  • Si es así, cómo puedo moverlo? Creo que esto se llama el comando Detach, ¿no es así?
  • ¿Hay algún problema de rendimiento/seguridad que pueda ocurrir con un archivo .mdf como este?
  • ¿Mi configuración prevista funcionaría bien con un plan de alojamiento virtual típico? Espero que la base de datos .mdf no cuente contra el número limitado de bases de datos de SQL Server que se pueden crear con mi plan.

Espero que esta pregunta no sea demasiado amplia. ¡Gracias por adelantado!

Nota: Estoy empezando con ASP.NET MVC y todo esto, por lo que podría estar completamente mal entendiendo cómo se supone que funciona.

Respuesta

9

App_Data MDF es una base de datos de SQL Server que se adjuntará justo a tiempo a una instancia de SQL Server. La única forma de acceder a un MDF es conectándose a un servidor SQL. Visual Studio oculta lo que ocurre detrás de las escenas, pero todavía está usando una instancia de SQL Server. Este archivo adjunto just-in-time del MDF solo funciona en las ediciones SQL Express. En SQL Express 2005 terminaría con una instancia de usuario, vea Connecting to SQL Server Express User Instances (ADO.NET). Con SQL Express 2008 puede controlar si desea una instancia de usuario o adjuntarla a la instancia de servicio.

Deberá consultar con su proveedor de hosting para confirmar si cuentan esta base de datos como one en el plan o no.Debe tener en cuenta que desde el punto de vista del uso de recursos, asociar una base de datos por la cadena de conexión (que es lo que sucede cuando usa la opción de implementación MDF App_Data) es tan costoso como cualquier otra forma de abrir y ejecutar la base de datos, Me sorprendería saber que lo permiten y no cuentan en contra de la cantidad de base de datos permitida en el plan.

1

No use App_Data para su db. Es bueno para un rápido "cómo hacer" o un prototipo, pero no es bueno para el servidor de producción. Puede causarle muchos problemas durante el mantenimiento. Lo he usado una vez y nunca más ...

Sí, el rendimiento. Porque siempre tiene que adjuntar el db. No es un gran problema cuando tienes una pequeña web con varios visitantes al día.

Sería mejor preguntarle a su servicio de alojamiento si lo cuentan o no.

5

Todas las bases de datos de SQL Server son archivos .mdf. Los archivos .mdf se almacenan aquí: * C: \ Archivos de programa \ Microsoft SQL Server \ MSSQL \ Data * (Ubicación predeterminada).

Tiene razón en que debería separar la base de datos SQL del servidor para mover la base de datos a la carpeta App_Data. Puede hacer eso haciendo clic derecho en la base de datos en SSMS.

Las ventajas de mover la base de datos a la carpeta App_Data es si:

  1. La base de datos se mantendrá allí cuando se utiliza en la producción y va a conectar la base de datos a un servidor SQL Server de forma dinámica cuando se conecta a ella.
  2. Desea publicar el sitio web en su servidor junto con el mdf en la carpeta App_Data (que va de la mano con el primer motivo).
  3. Manteniendo todos ustedes proyectos de archivos en una ubicación. Fácil de mover Fácil de copia de seguridad.

En su situación en la que va a cargar su base de datos a través de un panel de control personalizado, no veo ninguna ventaja para mover la base de datos a la carpeta App_Data. Cuando publica el sitio, puede simplemente separar el DB, tomar el archivo mdf y cargarlo (su panel de control puede tener otras formas de importar un DB, por ejemplo, scripts SQL ...).

Para contestar las preguntas directamente ...

¿Tiene sentido para mover mi SQL servidor de base de datos de SQL Server y en el directorio App_Data como un archivo .mdf ?

Yo no lo creo.

Si es así, ¿cómo puedo moverlo?

Separar. Puede hacer eso haciendo clic derecho en la base de datos en SSMS.

¿Hay alguna rendimiento/seguridad problemas que pueden ocurrir con un archivo .mdf así?

No estoy seguro acerca de las diferencias de seguridad, pero como se mencionó, es probable que haya un mejor rendimiento cuando la base de datos se deja adjunta al servidor SQL.

¿Mi configuración prevista funcionaría bien con un plan de alojamiento virtual típico ?

Debería comprobar si cuentan/permiten que las bases de datos sql se adjunten dinámicamente.

Espero que esto ayude. No soy un experto

0

Honestamente, puede que esto no responda a sus preguntas directamente, pero descubrí que la forma de configurarlo en hosting (no localmente) es mover/importar su base de datos a su empresa de alojamiento, que le dará una cadena de conexión para su host/db. Una vez que "sale a la luz" (o prueba, cargando su sitio al host) - cambie la cadena de conexión a la proporcionada por su host, en su web.config. Esto es probablemente simplificado, pero siempre me ha funcionado.

Cuestiones relacionadas