none
Consulta sobre BD ASPNETDB.MDF RRS feed

  • Pregunta

  • Hola a todos
    tengo un problema, he usado los controles de login en visual studio .net 2005,
    me crea la bd "ASPNETDB.MDF" y en el proyecto me funciona perfectamente (ya que lo agrega como .mdf)
    pero mi duda es
    ¿como se debe hacer para subir esa base de datos a produccion?
    no se como se puede hacer ya que en desarrollo esta bd esta agregada al proyecto .net
    otra pregunta
    una vez arriba la Base de datos ¿como se crean los perfiles? (desde produccio)
    -se puede importar la base de datos de desarrollo?
    por que lei que se puede crear la Bd pero estaria vacia (si estuviera vacia)
    como se podrian crear los distintos perfiles ya que los usuarios se crean con el control pero como  asignarle los distintos perfiles a los usuarios que se crearan

    de antemano muchas Gracias

     

    lunes, 12 de julio de 2010 18:30

Todas las respuestas

  • La base de datos aspnetdb.mdf en el directorio App_Data se monta de forma automática en modo "instancia de usuario" con la versión Express de SQL Server. Si en el servidor de producción hay un Sql Server Express, entonces basta con copiar el proyecto completo, con el mdf incluido, y funcionará igual en el servidor de producción, usando todos los perfiles que vengan cargados dentro del mdf.

    Si en producción no tienes un Sql Server Express, sino uno "normal", entonces la instancia de usuario no funciona. Hay que crear la base de datos mediante el comando aspnet_regsql, y en ese caso, efectivamente, estaría vacía. También puedes copiar la de desarrollo, bien sea con backup y restore, o attachando el mdf desde el SSMS (en cuyo caso conservas todos los datos que tenías ya cargados). Después hay que cambiar la cadena de conexión "LocalSqlServer" para que apunte a la base de datos que has creado en producción (por defecto esta cadena se define en el machine.config, pero puedes suplantarla en el web.config si no quieres modificar el machine.config).

     

    lunes, 12 de julio de 2010 18:49
  • alberto:
    Gracias por responder
    pero tengo otras dudas si me pudieras aclarar por favor


    "La base de datos aspnetdb.mdf en el directorio App_Data se monta de forma automática en modo "instancia de usuario" con la versión Express de SQL Server. Si en el servidor de producción hay un Sql Server Express, entonces basta con copiar el proyecto completo, con el mdf incluido, y funcionará igual en el servidor de producción, usando todos los perfiles que vengan cargados dentro del mdf."

    pregunta:
    te refieres a Publicar el sitio o a copiar el codigo fuente completo en produccion
    me puedes aclarar esa duda por favor

     "Si en producción no tienes un Sql Server Express, sino uno "normal", entonces la instancia de usuario no funciona. Hay que crear la base de datos mediante el comando aspnet_regsql, y en ese caso, efectivamente, estaría vacía. También puedes copiar la de desarrollo, bien sea con backup y restore, o attachando el mdf desde el SSMS (en cuyo caso conservas todos los datos que tenías ya cargados). Después hay que cambiar la cadena de conexión "LocalSqlServer" para que apunte a la base de datos que has creado en producción (por defecto esta cadena se define en el machine.config, pero puedes suplantarla en el web.config si no quieres modificar el machine.config)."

    logre crear la Base de Datos completa mediante el "aspnet_regsql" pero me la crea vacia

    pregunta:
    pero me puedes decir como hacer esto "copiar mediante backup y restore, o attachando el mdf"
    no encuentro con el SQL 2005 express hacer esto

    de antemano Muchas Gracias

     

    lunes, 12 de julio de 2010 20:49
  • te refieres a Publicar el sitio o a copiar el codigo fuente completo en produccion
    me puedes aclarar esa duda por favor

    Me refiero a trasladar el sitio al servidor de producción por cualquiera de los métodos existentes, desde un XCOPY hasta una instalación mediante .msi, pasando por los asistentes para copiar o para publicar sitios web, con o sin fuentes. El único requisito en cualquiera de estos casos es que el procedimiento que se utilice copie al servidor el directorio App_Data junto con el aspnetdb.mdf que contiene en su interior.

    pero me puedes decir como hacer esto "copiar mediante backup y restore, o attachando el mdf" no encuentro con el SQL 2005 express hacer esto

    Lo de backup y restore se refiere a eso, a hacer una copia de seguridad de la base de datos y luego restaurarla en la otra máquina. Efectivamente, y como ya has notado, el problema es que desde el Sql Server Management Studio Express no puedes hacer un backup de las bases de datos en modo "instancia de usuario", sino sólo de las que están attachadas al servidor. Como solución más sencilla, te recomiendo que hagas dicha operación (adjuntar la base de datos al servidor). Para ello, copia el fichero .mdf que hay en la carpeta App_Data a algún directorio en el que tenga permiso de acceso el proceso SQL Server (por ejemplo a la misma carpeta "DATA" donde vienen por defecto las bases de datos del servidor). Una vez ahi, abre el SSMSE, haz click derecho sobre la rama "databases" en el Examinador de Objetos, y selecciona en el menú de contexto la opción "Attach...". Usa la ventana que aparece para añadir el fichero .mdf que antes copiaste, y una vez hecho eso te aparecerá la base de datos en el SSMSE. Ahora ya puedes sacar el backup desde el SSMSE en la forma habitual en que lo harías para cualquiera de las bases de datos normales. O bien, otra alternativa es copiar el .mdf al servidor, y hacer estas mismas operaciones en el SSMS del servidor, con lo que el .mdf quedaría adjuntado directamente al SQL Server de producción, y no necesitarías hacer el backup y el restore.

    lunes, 12 de julio de 2010 21:45
  • Gracias Alberto

    Mira en produccion esta el sql 2000 normal, hice lo que me dijiste copie los 2 archivos (ASPNETDB,aspnetdb_log), los deje en la ruta "C:\Archivos de programa\Microsoft SQL Server\MSSQL\Data", despues adjuntar base de datos, selecciono la base de datos mdf, pero me da el siguiente error "Error 602: No se encuentra la fila en sysindexes de la base de datos con id. 11, id. de objeto 1, id de indice 1. ejecute DBCC CHECKTABLE en sysindexes."

     Me habra faltado algun paso o no me deja adjuntarlo de sql 2005 o 2000

    de antemano muchas gracias

    martes, 13 de julio de 2010 4:04
  • Ah, no, el truco del Attach no funciona desde una versión moderna a una antigua. No puedes adjuntar a un Sql Server 2000 una base de datos que se creó con el 2005. Y el backup y restore tampoco funcionará; puedes hacer backup en una versión antigua y restaurarlo en una más moderna, pero no al revés.

    Si no tienes más remedio que usar la versión 2000 en el servidor, me temo que tendrás que mover los datos de las tablas individualmente (crear una serie de sentencias INSERT equivalentes a los registros de la BD original y luego ejecutarlas en la de destino). Integration Services puede hacerlo automáticamente, pero en la versión Express no viene. También hay herramientas de terceros que lo hacen... pero son caras (por ejemplo http://www.red-gate.com/products/SQL_Compare/index.htm). Si usas Visual Studio 2010, hay una opción de despliegue que permite publicar todo el sitio web, incluyendo los datos de la base de datos... pero me temo que no la puedes usar con Sql Server 2000. Así que creo que tus opciones se limitan a la programación. Tendrás que escribir algo de código para insertar en la base de datos de producción la información que deseas.

     

    martes, 13 de julio de 2010 5:51
  • Muchas Gracias por responder Alberto

    tendre que hacer los insert a mano e insertarlos en produccion, no me queda de otra

    disculpa pero tengo otra duda

    si tengo 3 perfiles en mi aplicacion

    administrador, perfil1 y perfil 2

    cuando se cree un nuevo usuario (con el control de .net) 

    ¿como se puede seleccionar que perfil tendra el usuario nuevo?

    ¿o deja alguno por defecto?

    de antemano muchas Gracias

     

    martes, 13 de julio de 2010 13:56
  • Si no me equivoco, al crear el usuario no se le asigna por defecto ningún rol. Se los puedes asignar a posteriori usando las APIs de Membership, mediante el método estático AddUserToRole de la clase Roles (en System.Web.Security).
    martes, 13 de julio de 2010 14:39
  • Gracias Alberto por todas tus respuestas

    me han servido mucho, lo hare de esa manera y si tengo otra duda te pregunto

    saludos

     

    miércoles, 14 de julio de 2010 21:27
  • Tengo otra consulta

    se puede agregar un "DropDownList" con la lista de los perfiles dentro del control CreateUserWizard (para crear un usuarios), la idea es que los perfiles esten en una tabla, por lo tanto cuando se cree un usuario poder seleccionar un perfil

    ¿se puede hacer como seria la sintaxis para validar que seleccione un perfil y que o guarde con el perfil seleccionado?

    de antemano Muchas Gracias

    martes, 3 de agosto de 2010 16:19