none
No puedo modificar los datos de la base SQL desde una aplicación ASP.NET

    Pregunta

  • Hola, estoy haciendo una aplicación en ASP.NET con Microsoft Web Developer 2008 Express para conectarme a una base de datos en mi ordenador.

    La base de datos se carga normalmente en el proyecto y puedo visualizar sus datos en la página web creada (sobre IIS en mi Pc). El problema es que cuando hago algun cambio en la base de datos estos no se reflejan en la base de datos alojada en el servidor (SQL Server 2008 express) pero si se guardan en la copia de esta que se adjunta al proyecto por defecto.

    Si elijo no adjuntar una copia de la base de datos al proyecto cuando me lo pide (como hago en visual basic 2008 express) la página web me da el siguiente error:

    "An attempt to attach an auto-named database for file C:\Archivos de programa\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\DATA\Mybase.mdf failed. A database with the same name exists, or specified file cannot be opened, or it is located on UNC share."

    La consulta y actualizacion funciona bien en el VB2008 Express pero en el Web developer 2008 Express no.

    Tengo desactivado el firewall y tengo "enabled" todos los protocolos en el ISS (tcp/ip, VIA, etc...)

    Un saludo y gracias de antemano
    jueves, 9 de julio de 2009 18:48

Respuestas

  • Hola.

    Por lo que parece, tu aplicación utiliza una base de datos que se adjunta en tiempo de ejecución. Asegúrate de que en el servidor no exista ya una base de datos con ese nombre (podría ser MyBase, pero eso es sólo el nombre del mdf) y que efectivamente el mdf exista en esa ruta en el servidor (y que la cuenta que arranca el servicio tiene permisos). Sé que te estoy traduciendo el mensaje de error, pero en este caso (y casi siempre) sería lo primero que habría que mirar.


    Alberto López Grande.
    viernes, 10 de julio de 2009 7:42
    Moderador

Todas las respuestas

  • Hola, es un problema mas de aplicacion que de SQL por lo que cuentas.
    Habria que ver con un profiler donde esta el problema y depurar los procesos.

    Tambien podrias hacer un debug de tu aplicacion y ver que pasa en esa parte del proceso
    Maxi Accotto Consultoria en SQL Server Buenos Aires - Argentina http://blog.maxiaccotto.com
    jueves, 9 de julio de 2009 19:17
    Moderador
  • Hola.

    Por lo que parece, tu aplicación utiliza una base de datos que se adjunta en tiempo de ejecución. Asegúrate de que en el servidor no exista ya una base de datos con ese nombre (podría ser MyBase, pero eso es sólo el nombre del mdf) y que efectivamente el mdf exista en esa ruta en el servidor (y que la cuenta que arranca el servicio tiene permisos). Sé que te estoy traduciendo el mensaje de error, pero en este caso (y casi siempre) sería lo primero que habría que mirar.


    Alberto López Grande.
    viernes, 10 de julio de 2009 7:42
    Moderador
  • Gracias por responder.

    El procedimiento que realizo para disponer de la base de datos es:

    -La creo y relleno en el SQL server management studio (obviamente la base existe en el servidor, nose si te refieres a esto)

    -En el Web Developer 2008 Express conecto con la base de datos creada (funciona bien)

    -Adjunto una clase LinQtoSQL y arrastro la tabla de mi base de datos desde origenes de datos al diseñador relacional de objetos de LinQtoSQL.
    En este punto me pide adjuntar una copia de la base de datos al proyecto porque este utiliza un origen de datos local ¿?:

         +En caso afirmativo se crea una copia de la base de datos y la aplicación funciona bien pero los cambios realizados en la base de datos no afectan a la   
           base de datos original situada en el directorio de SQL server 2008 Express
        
         +En caso negativo aparece el error mostrado antes al cargar la página

    -En VB2008 express podia modificar la base de datos original en el servidor si elegía no adjuntarla al proyecto (los pasos son similares a los anteriores) pero en el Web developer no me deja.

    Un saludo
    viernes, 10 de julio de 2009 17:09
  • Hola.

    En resumen, tienes una base de datos en el servidor y otra distinta en el proyecto. Debes decidir si quieres modificar la base de datos en un sitio o en otro. Tu proyecto lo puedes apuntar a la base de datos que creas, rellenas y modificas desde el Management Studio. Sobre el cómo, pues igual que lo hacías con el VB2008. Como tu proyecto está configurado para usar el origen de datos local, si no lo adjuntas, tu aplicación no funciona. Cambia la configuración de la conexión para que apunte a la base de datos que ya existe y seguramente así te funcione.


    Alberto López Grande.
    viernes, 10 de julio de 2009 19:45
    Moderador
  • Estoy de acuerdo con qwalgrande, el problema parece residir en tu connectionstring apuntando a la DB equivocada...
    Protected Sub User_Read(ByVal sender As Object, ByVal e As System.EventArgs) Handles User.Read ______ If Not IsPostBack Then____ If Me.Respuesta.Util = True Then_____ Me.Respuesta.MarcarComoRespuesta()___ End if____ End If_____ End Sub___ xD!!
    viernes, 10 de julio de 2009 19:51
  • Hola.

    En resumen, tienes una base de datos en el servidor y otra distinta en el proyecto. Debes decidir si quieres modificar la base de datos en un sitio o en otro. Tu proyecto lo puedes apuntar a la base de datos que creas, rellenas y modificas desde el Management Studio. Sobre el cómo, pues igual que lo hacías con el VB2008. Como tu proyecto está configurado para usar el origen de datos local, si no lo adjuntas, tu aplicación no funciona. Cambia la configuración de la conexión para que apunte a la base de datos que ya existe y seguramente así te funcione.


    Alberto López Grande.
    Hola, soy novato y no veo donde esta la opción de cambiar la configuración para usar un origen de datos "no local", yo lo que hago es buscar en origenes de datos la base original en su ruta, pero si no la adjunto al proyecto (una copia en App_Data) no va la página.

    He intentado otra cosa pero me encuentro con otro problema:

    Como a menos que adjunte una copia de la base de datos en App_Data la aplicación ASP.NET no funciona, he intentado poner directamente la base de datos en esa ruta local y conectarme a ella en esa dirección con el visual Basic 2008 Express ya que necesito que ambos (VB 2008 y Web Developer 2008) puedan modificar la base, desde el ordenador local y desde internet respectivamente. 

    El problema es que no puedo conectarme a la vez desde los dos programas a la base de datos (si lo hago desde desde cada uno por separado va bién) 

    Gracias
    • Editado Ra2ven sábado, 11 de julio de 2009 16:48
    sábado, 11 de julio de 2009 16:43