2009-04-13 21 views
5

He estado desarrollando una aplicación WebForms de ASP.NET que necesitaba la funcionalidad de inicio de sesión de la cuenta (por ejemplo, registrar nuevos usuarios, cambiar contraseñas, recuperar contraseñas, perfiles, roles, etc.) . Para hacer esto, utilicé FormsAuthentication con el almacén de datos predeterminado, que, para mi sorpresa, es un archivo MDF en App_Data. Cuando llega el momento de implementar realmente esta aplicación. en vivo en la web, voy a utilizar un alojamiento compartido como GoDaddy u otra empresa barata.App_Data/ASPNETDB.MDF a Sql Server 2005 (o 08)

Para mayor eficiencia, me gustaría cambiar de este MDF a SQL Server 2005 o 2008 (¿quién en su sano juicio utiliza archivos planos?). Con el alojamiento compartido, sin embargo, no voy a poder ejecutar ningún programa como aspnet_regsql.exe. Solo tendré un solo nombre de usuario y contraseña para una base de datos SQL Server, y una cuenta FTP en la raíz del dominio. Sin escritorio remoto MSTSC, sin acceso a la consola, sin retoques en IIS, etc.

No necesitaré transferir ninguna cuenta de usuario de ASPNETDB.MDF (el sitio comenzará con cero usuarios), pero ¿cómo se supone que debo :

1) Cree fácilmente las tablas, procedimientos, etc. que Visual Studio creó automáticamente en ASPNETDB.MDF cuando utilicé la Herramienta de administración de sitios web para comenzar con FormsAuthentication?

2) Solicite al proveedor de membresía de SQL que use una cadena de conexión en lugar de usar lo que sea ahora para conectarse a esta ASPNETDB.MDF. Diablos, ni siquiera veo ninguna cadena de conexión a este MDF en el web.config; ¿cómo diablos está mi aplicación? incluso encontrarlo? Machine.config? Esa sería una mala decisión si ese es el caso. Esta mierda detrás de escena me vuelve loco.

¡Cualquier ayuda de alguien que ha pasado por esta migración sería muy, muy apreciada!

Respuesta

4

.mdf no es un archivo plano. Es un archivo de base de datos express de SQL Server.

A veces es mejor no conducir un Porsche en un camino de tierra ...;)

Recomiendo conseguir un servidor dedicado si va a alojar un sitio web con un backend grave. El alojamiento compartido tiene límites desde el punto de vista del administrador.

Para encontrar las tablas en SQL Express, hay una herramienta llamada 'gestión del estudio' que se incluye con SQL Server EE que le permitirán llegar a las tablas de la .mdf etc

He aquí un ejemplo de una cadena de conexión a un .mdf en su web.config

<connectionStrings> 

     <add name="AddressBookConnectionString" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\AddressBook.mdf;Integrated Security=True;User Instance=True" providerName="System.Data.SqlClient"/> 

</connectionStrings> 

Me identifico con su frustración. Configurar y alojar un sitio web complejo no es una tarea fácil. Generalmente, ejecutar asistentes para configurar una aplicación web es una mala idea si planifica algo serio para el sitio, a menos que esté aprendiendo sobre aplicaciones web. Debe superar ese nivel de abstracción y obtener más información sobre cómo configurar/anular manualmente el proveedor de membresía, etc., si va a hospedar profesionalmente.

Espero que esto te dirija en la dirección correcta. Buena suerte;)

+0

También debería poder acceder al mdf a través de Visual Studio. – Konrad

1

El MDF no es en realidad una base de datos de archivos plana, utiliza el motor SQL Express con user instances para que pueda adjuntar bases de datos sobre la marcha. Este motor es una versión limitada de SQL Server, aunque los límites son bastante altos, por lo que, a menos que tenga un sitio ocupado, esto no será un problema. Desde here, los límites son ...

  • La falta de características de la empresa admite
  • limitada a una CPU de memoria Un GB
  • límite para las bases de datos de agrupación de almacenamiento intermedio
  • tener un tamaño máximo de 4 GB

La cadena de conexión debe ser en su web.config, busque "AttachDbFileName" (sin comillas). Para más información, vea here.

Si tiene SQL completo en su paquete de alojamiento, la empresa de alojamiento le proporciona una herramienta web para adjuntar el archivo MDF (especificando su ruta) a una instancia completa de servidor SQL. Simplemente puede dejar el archivo MDF en la carpeta app_data (ya que la carpeta tiene permisos establecidos que impiden que los usuarios anónimos descarguen el archivo db).

Una vez conectado para utilizar la instancia estándar de SQL Server (u otra versión) en lugar de la instancia de usuario de SQL Express, solo necesita cambiar la cadena de conexión en el archivo web.config para señalar la instancia de base de datos que configuró utilizando la herramienta web en lugar de usar la función Auto Attach de SQL Express.

Ver here para las instrucciones godaddy.

3

Algunos detalles serán diferentes dependiendo de su proveedor de alojamiento, pero:

  1. Si no lo ha hecho ya, descargar e instalar Microsoft SQL Server Management Studio Express

  2. su proveedor de alojamiento tendrá que proporcionará la información de conexión de administrador para conectarse a su instancia de servidor sql. Con esa información, verifique que puede conectarse usando MSSMSE. Si no puede, el resto de esto no tendrá importancia.

  3. Vaya a este weblog y siga los pasos para crear los scripts de base de datos necesarios para mover su base de datos a producción. Estos scripts se pueden ejecutar en la ventana de consulta de MSSMSE.

  4. Normalmente, su cadena de conexión se almacenará en el archivo Web.Config. Las cadenas de conexión. No querrá usar el estilo "AttachDbFilename =" si, como dice en su pregunta, se ha movido a SQL Server completo. Su cadena de conexión se parecerá más a esto:

    < add name = "myConnectionName" connectionString = "Data Source = myServerAddress; Initial Catalog = myDataBase; User Id = myUsername; Password = myPassword;" >

-2

Esto es muy fácil de hacer si usted está comenzando con nuevos datos

me encontré con "C: \ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ a spnet_regsql -C * Fuente de Datos = localhost; Catálogo inicial = MYDB; Persist Security Info = True; User ID =; Password = **; " * -A todo "para incluir las tablas de membresía ASP.NET y sprocs en la base de datos de mi elección. Si lo hace, asegúrese de que anula la cadena de conexiones LocalSQLServer predeterminada o no encontrará la base de datos de esta manera en web.config de tu asp.neto sitio Web

<connectionStrings> < claras/> < add name = "LocalSqlServer" connectionString = "Data Source = localhost; Initial Catalog = MYDB; Persisten Info Security = True; User ID = **; contraseña = * ***; " providerName = "System.Data.SqlClient"/>

+0

¿No leyó todo en la pregunta? Cita: * No voy a poder ejecutar ningún programa como aspnet_regsql.exe *. – awe

+0

Si está comenzando con datos NUEVOS, puede ejecutar aspnet_regsql.exe ANTES de subirlo a godaddy. Creo que olvidé agregar eso. – Paully

4

Ese archivo MDF es una base de datos de SQL Server. Todas las versiones de SQL Server (excepto CE) utilizan el mismo formato de archivo, por lo que el MDF se puede abrir mediante cualquier otro servidor SQL utilizando sp_attach_db o SSMS, consulte How to: Attach a Database (SQL Server Management Studio).. Una vez conectado a su servidor SQL, SSMS puede crear una secuencia de comandos de toda la base de datos, consulte How to: Generate a Script (SQL Server Management Studio). También esto se puede hacer programáticamente, usando el objeto SMO Scripter. El script SSMS contendrá toda la tabla, índice, procedimiento y cualquier otro objeto en la base de datos. También hay un Import and Export Wizard in SSMS y puede usar esto para exportar el contenido de sus tablas (cualquier información) a un archivo CSV y luego importar este archivo CSV en su base de datos alojada, pero ese asistente de importación/exportación es bastante complejo (usa SSIS).

Otra alternativa para la exportación de datos es utilizar la utilidad bcp, ver Bulk Import and Bulk Export Operations.

Teóricamente puede realizar todas estas operaciones utilizando la instancia de SQL Server Express en su entorno VS, utilizando herramientas de línea de comandos como sqlcmd y bcp, y tal vez escribiendo su propia aplicación SMO Scripter para exportar el esquema de la base de datos. Sin embargo, requiere un cierto nivel de experiencia. Será mucho más fácil tener acceso a un estudio gestionado completo para prearrenar todos los datos que se importarán en su sitio de alojamiento.

No se olvide de consultar con su proveedor si le permiten restaurar o adjuntar su propia base de datos, entonces puede escaparse fácilmente con solo una copia de archivo al proveedor.

Tenga en cuenta que su archivo MDF solo será posible adjuntarlo a un servidor SQL de al menos la misma versión que la que ha creado. Su entorno VS contiene un servidor SQL, probablemente llamado SQLEXPRESS, y debe verificar exactamente de qué versión se trata. Los servidores de una compilación anterior a su versión de instancia de VS SQL rechazarán adjuntar su archivo MDF, ya que es un formato que no reconocen. Siga los pasos en KB 321185 para determinar qué versión de SQL Server tiene su entorno VS.

actualización

yo no era consciente VS tiene un asistente de exportación. Solo sigue los pasos Gary mentions in the link que él proporciona.