entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

1voto

Problema con base de datos SQLExpress Visual Basic

Hola amigos, como están?, tengo un problema cuando intento acceder a un formulario del que tengo cargado una base de datos me sale el siguiente error : "Error al intentar adjuntar una base de datos nombrada automaticamente para el archivo C:\Users\javier\Documents\Visual Studio 2010\Projects\proyecto1\proyecto1\Taller2.mdf, Ya existe una base de datos con el mismo nombre , no se puede abrir el archivo especificado o se encuentra en un recurso compartido UNC"

Mi conexión en la base de datos la tengo así:

Dim ruta As String = Application.StartupPath
ruta = ruta.Substring(0, Len(ruta) - 9) & "Taller2.mdf"

Conexion.ConnectionString = "Data Source=.\SQLEXPRESS;AttachDbFilename=" & ruta & ";Integrated Security=True;Connect Timeout=30;User Instance=True"

Algunas veces cuando accedo al formulario de inicio no me da problemas pero cuando me muevo por los otros formularios me salta este error.

Gracias por su atención, un saludo.

0voto

binamonk comentado

¿Estas cerrando las conexiones despues de hacer los queries?

0voto

javierek89 comentado

Si, tengo cerradas las conexiones después de hacer las consultas y en los eventos Load también la base de datos la tengo en la carpeta de Visual Studio 2010

1 Respuesta

2votos

carlossevi Puntos63580

Un fichero MDF no es realmente una base de datos de MS SQL Server sino que es el fichero primario de la base de datos (Master Database File). A la hora de crear una conexión a una instancia de MS SQL Server Express tienes dos opciones: conectar a una base de datos existente o indicarle de dónde coger un fichero MDF y pedirle que lo adjunte como base de datos y te conecte.

Según la siguiente documentación de la cadena de conexión que estás usando:

Si la base de datos nombrada ya se encuentra adjuntada, SQL Server no
la readjunta sino que utiliza la ya adjuntada como la base de datos
por defecto.

En tu cadena de conexión también estás usando User Instance=True ¿realmente lo necesitas? Esto crea una instancia nueva por cada conexión, y entonces no sé cómo controla si la base de datos ya está adjuntada.

¿En cuantos equipos se ejecuta tu aplicación? ¿Cuantas instancias de la aplicación ejecutas al mismo tiempo? ¿Sólo una? ¿La base de datos la utiliza algún otro proceso?

0voto

javierek89 comentado

Se ejecuta en mi ordenador y en otro, estoy usqandolo en dos formularios más he quitado la linea:
Dim ruta As String = Application.StartupPath
ruta = ruta.Substring(0, Len(ruta) - 9) & "Taller2.mdf"

Y le introducido la ruta absoluta y parece que ya no me tira el error, solo me da una excepción cuando entro a otro formulario de InvalidOperationException: "No esta autorizado a cambiar la propidad ConnectionString, el estado de la conexión es abierta", pero luego no me vuelve aparece el error cuando vuelvo a entrar y me carga los datos, puede ser lo que comentas de User Instance =True que creo una instancia por cada conexión voy a probar y te cuento, muchas gracias, un saludo.

0voto

javierek89 comentado

Vale ya lo solucione Gracias, el problema era que no se actualizaba bien la ruta donde se encuentra el fichero de base de datos, puse la ruta relativa donde se encuentra el fichero y ya me hace bien las conexiones, muchas gracias, un saludo.

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta