none
¿Cómo debo instalar mi programa en otra PC? RRS feed

  • Pregunta

  • Saludos a todos, este es mi primer post.

    Hice un programa en Visual Studio Comunity 2015 usando Visual Basic, aquí mismo cree la base de datos y todo funciona bien en mi PC. He creado el instalador y lo instalé en otra PC pero al ejecutar salió error. Copié manualmente los archivos *.mdf y *.ldf a esta PC y nada. Instalé el SQL Server 2014 y SQL Server Management Studio, en este último me conecto mediante "SERVIDOR-PC" y autenticación de windows. Si intento conectar usando "SERVIDOR-PC\MSSQLSERVER" no conecta (he visto en el administrador de configuración que MSSQLSERVER es la instancia). Me sale este error:

    (NO ME DEJÓ ADJUNTAR IMAGEN SALIÓ ESTO:

    • El texto del cuerpo no puede contener imágenes ni vínculos hasta que podamos verificar su cuenta.

    )

    En el Sql Server Management Studio tengo aparentemente 2 bases y mas aún una apunta al directorio donde instalé el programa y la otra apunta al directorio donde hice mi aplicación en mi PC de desarrollo:

    

    (AQUÍ TAMPOCO ME DEJÓ ADJUNTAR IMAGEN)

    En la cadena de conexión que está en la carpeta de instalación *.exe.config tengo:

    connectionString="Data Source=PC-SERVIDOR;AttachDbFilename=C:\Program Files\........\BaseServidorv11.mdf;Integrated Security=True"

    (Disculpen que haya borrado la ruta completa, pero a pesar de eso creo que se entiende)

    En uno de tantos intentos y cambios logré que mi programa corriera y me mostró la base de datos pero al escribir un registro en la base de datos salió error y peor ahora ni si quiera puedo hacer que mi programa corra.

    Cualquier sugerencia será bienvenida.

    lunes, 13 de marzo de 2017 14:55

Respuestas

  • Al restaurar la base usando el Management SQL me genera el siguiente código:

    USE [master]
    RESTORE DATABASE [BASESERVIDORV11.MDF] FROM  DISK = N'C:\Program Files\Instalador\D__VS2015_SERVIDOR_BIN_DEBUG_BASESERVIDORV11.MDF.bak' WITH  FILE = 1,  MOVE N'BaseServidorv11' TO N'C:\Program Files
    
    \Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\BaseServidorv11.mdf',  MOVE N'BaseServidorv11_log' TO N'C:\Program 
    
    Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\BaseServidorv11_log.ldf',  NOUNLOAD,  STATS = 5
    
    GO
    

    Entonces eliminé la base desde el Management SQL, lo cerré, probé mi programa y obviamente no corrió, abrí el sqlcmd y escribí todo el código anterior:

    1> USE [master]
    
    2> RESTORE DATABASE ....
    
    3> GO

    Con esto se restauró la base de datos, probé mi programa y corrió, entre al Management SQL y verifiqué que se había restaurado la base por línea de comandos usando el sqlcmd.

    Entonces creo que de esta forma la próxima vez ya no será necesario instalar el Management SQL.

    Espero todo esto le sirva a alguien.

    martes, 14 de marzo de 2017 17:27
  • Gracias por responder!

    Despues de tanto batallar entré aquí para publicar mi solución, mi cadena de conexión quedó así:

    connectionString="Data Source=SERVIDOR-PC;Initial Catalog=BaseServidorv11.mdf;Integrated Security=True"

    Fue importante cambiar de AttachDbFilename a Initial Catalog de lo contrario no funciona.

    Otro punto importante fue que en el SQL Management al restaurar mi base de datos en esta nueva PC, me quedaba por defecto un nombre largo que correspondía a la ruta donde se encontraba la base de datos en mi PC de desarrollo, entonces lo cambié tal que solo me quedara el nombre de la base de datos sin ruta, en mi caso BaseServidorv11.

    Efectivamente como dices no fue necesario que el Agente SQL Server estuviese en ejecución, solo el servicio SQL Server debe estar en ejecución.

    Gracias de todos modos por tomarte tu tiempo en escribir y espero mi comentario le ayude en algo a alguién.

    Ahora tengo otra pregunta, como puedo hacer para que en una nueva PC sin tener que instalar el SQL Management pueda restaurar mi base de datos y correr mi programa?

    Estoy intentando mediante la herramienta Asistente para "Importación y exportación de datos SQL" pero me sale error: "No se puede abrir la base de datos BaseServidorv11.mdf solicitada por el inicio de sesión ... Error de inicio de sesión del usuario SERVIDOR-PC\SERVIDOR. Error 4060"

    También intente usando sqlcmd :

    1>RESTORE DATABASE BaseServidorv11 FROM DISK = 'C:\COPIA.bak' WITH REPLACE;

    2>GO

    Me sale: 

    "Error al buscar archivo D:\Proyectos\Server\bin\Debug\BaseServidorv11.mdf ... el sistema no puede encontrar la ruta especificada"

    Esa ruta es la ruta donde se encuentra la base de datos original en mi pc de desarrollo.

    Como puedo resolver esto?

    martes, 14 de marzo de 2017 16:16

Todas las respuestas

  • He visto que el Agente SQL Server está detenido, es necesario que esté en ejecución? He tratado por varios medios ejecutarlo pero se detiene, sin embargo el el servicio SQL Server si está en ejecución.

    Alguna sugerencia?

    martes, 14 de marzo de 2017 13:27
  • Javiervs15,

    No, no necesitas SQL Server Agent para tu propósito, de hecho si tienes instalado una edición EXPRESS de SQL Server el servicio no está disponible.

    Si el motor de base de datos se encuentra en el mismo equipo donde se ejecuta la aplicación no deberías tener ningún inconveniente para acceder a ella, basta con indicar correctamente las credenciales de acceso, por ejemplo, el nombre de instancia que indicas es un nombre de instancia predeterminado por tanto no necesitas escribirlo como parte del nombre del atributo 'DataSource', intenta con la siguiente cadena de conexión:

    Data Source=SERVIDOR-PC;Initial Catalog=NombreBaseDatos;Integrated Security=SSPI;


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    martes, 14 de marzo de 2017 14:34
  • Gracias por responder!

    Despues de tanto batallar entré aquí para publicar mi solución, mi cadena de conexión quedó así:

    connectionString="Data Source=SERVIDOR-PC;Initial Catalog=BaseServidorv11.mdf;Integrated Security=True"

    Fue importante cambiar de AttachDbFilename a Initial Catalog de lo contrario no funciona.

    Otro punto importante fue que en el SQL Management al restaurar mi base de datos en esta nueva PC, me quedaba por defecto un nombre largo que correspondía a la ruta donde se encontraba la base de datos en mi PC de desarrollo, entonces lo cambié tal que solo me quedara el nombre de la base de datos sin ruta, en mi caso BaseServidorv11.

    Efectivamente como dices no fue necesario que el Agente SQL Server estuviese en ejecución, solo el servicio SQL Server debe estar en ejecución.

    Gracias de todos modos por tomarte tu tiempo en escribir y espero mi comentario le ayude en algo a alguién.

    Ahora tengo otra pregunta, como puedo hacer para que en una nueva PC sin tener que instalar el SQL Management pueda restaurar mi base de datos y correr mi programa?

    Estoy intentando mediante la herramienta Asistente para "Importación y exportación de datos SQL" pero me sale error: "No se puede abrir la base de datos BaseServidorv11.mdf solicitada por el inicio de sesión ... Error de inicio de sesión del usuario SERVIDOR-PC\SERVIDOR. Error 4060"

    También intente usando sqlcmd :

    1>RESTORE DATABASE BaseServidorv11 FROM DISK = 'C:\COPIA.bak' WITH REPLACE;

    2>GO

    Me sale: 

    "Error al buscar archivo D:\Proyectos\Server\bin\Debug\BaseServidorv11.mdf ... el sistema no puede encontrar la ruta especificada"

    Esa ruta es la ruta donde se encuentra la base de datos original en mi pc de desarrollo.

    Como puedo resolver esto?

    martes, 14 de marzo de 2017 16:16
  • Al restaurar la base usando el Management SQL me genera el siguiente código:

    USE [master]
    RESTORE DATABASE [BASESERVIDORV11.MDF] FROM  DISK = N'C:\Program Files\Instalador\D__VS2015_SERVIDOR_BIN_DEBUG_BASESERVIDORV11.MDF.bak' WITH  FILE = 1,  MOVE N'BaseServidorv11' TO N'C:\Program Files
    
    \Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\BaseServidorv11.mdf',  MOVE N'BaseServidorv11_log' TO N'C:\Program 
    
    Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\BaseServidorv11_log.ldf',  NOUNLOAD,  STATS = 5
    
    GO
    

    Entonces eliminé la base desde el Management SQL, lo cerré, probé mi programa y obviamente no corrió, abrí el sqlcmd y escribí todo el código anterior:

    1> USE [master]
    
    2> RESTORE DATABASE ....
    
    3> GO

    Con esto se restauró la base de datos, probé mi programa y corrió, entre al Management SQL y verifiqué que se había restaurado la base por línea de comandos usando el sqlcmd.

    Entonces creo que de esta forma la próxima vez ya no será necesario instalar el Management SQL.

    Espero todo esto le sirva a alguien.

    martes, 14 de marzo de 2017 17:27