none
Restaurar base de datos SQL RRS feed

  • Pregunta

  • Hola, estuve leyendo un poco y vi que se puede restaurar la base de datos mediante código, acá un ejemplo

    https://www.codeproject.com/kb/install/restoredbtheninstall.aspx

    Este ejemplo lo quiero utilizar para ayudar al correcto funcionamiento de la base SQL para cuando el sistema se instale en la pc del cliente.

    Mi duda es una vez que se ejecuta el sistema y se restaura la base con tener instalado por ejemplo SQL Express ya tendría que funcionar?

    Me refiero a que si no hace falta entrar al SQL a crear el usuario 

    Saludos

    • Cambiado Enrique M. Montejo lunes, 6 de febrero de 2017 6:50 Pregunta relacionada con SQL Server.
    lunes, 6 de febrero de 2017 3:44

Respuestas

  • En el desplegable que señalas puedes, como te dice willams, elegir dos opciones autenticación Windows y autenticación sql.

    Si el usuario que instala el SQL Server, tiene privilegios suficientes para instalarlo, nada mas instalarlo y sin poner contraseña puede conectarse. En resumen la respuesta es si, puede hacerse, de hecho en el código que tu comentas en estas líneas

     // for Windows Authentication
        if(userName == "")
        {
            SqlConnection sqlCon = new SqlConnection
    	(@"Data Source="+serverName+@"; Integrated Security=True;");
            connection = new ServerConnection(sqlCon);    
        }
        // for Server Authentication
        else
        connection = new ServerConnection(serverName, userName, password);
    

    hace exactamente eso, IntregrateSecurity=true evita que tengas que conocer credenciales algunas.


    Comparte lo que sepas, aprende lo que no sepas (FGG)
    portalSQL
    El rincón del DBA

    • Marcado como respuesta Federico32113 martes, 7 de febrero de 2017 0:27
    lunes, 6 de febrero de 2017 15:41
    Moderador
  • Federico32113,

    ¿Tienes alguna necesidad expresa de usar autenticación por SQL Server?. Ya te ha comentado Miguel que tienes dos formas para conectarte a una instancia de SQL Server: Autenticación de Windows y Autenticación de SQL Server. Pues para el propósito -e incluso es aconsejable- puedes tomar la autenticación de Windows quedando la cadena de conexión de la siguiente manera:

    connectionString="Data Source=(local); Initial Catalog=NombreBaseDatos; Integrated Security=SSPI"

    Suficiente, no necesitas saber nada más, ni siquiera el nombre del servidor porque (local) hace referencia a la instancia que se ejecuta en el equipo local. Si insistes en un usuario y contraseña mucho no tengo por decir.

    Finalmente, ¿cómo despliegas la base de datos?. Ya te había comentado que no basta con colocar los archivos de datos y transacciones en un ruta y esperar que la instalación de SQL Server los tome, debes restaurar un medio de copia de seguridad o adjuntar el archivo de datos que creo es lo conveniente ya que indicas que el proceso de instalación copia en una carpeta los archivos de datos y transacciones. ¿Y cómo se restaura o adjunta?, pues depende, puedes crear un script y ejecutarlo como parte del proceso de instalación o tenerlo como parte de tu aplicación en un módulo -entiendo- de configuración inicial. Te dejo unos enlaces con información que puede servirte para el propósito.

    How to: Attach a Database File to SQL Server Express

    How to attach database from winforms using C#


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    • Marcado como respuesta Federico32113 martes, 7 de febrero de 2017 0:27
    lunes, 6 de febrero de 2017 19:43

Todas las respuestas

  • Federico32113,

    Posterior a restaurar un medio de copia de seguridad o a adjuntar una base de datos (*.mdf) a una instancia de SQL Server debe ser suficiente para que tu aplicación pueda conectarse a una base de datos, claro, siempre y cuando tengas escrito correctamente las credenciales de acceso.

    ¿Autenticación de SQL Server? ¿Por qué no usas la autenticación de Windows para conectarte a SQL Server? La cadena de conexión debería tener la siguiente forma:

    connectionString="Data Source=HECTOR;Initial Catalog=NombreBaseDatos;Integrated Security=SSPI"


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    lunes, 6 de febrero de 2017 5:27
  • Si, comprendo que esa es la forma de conexión.

    Pero mi pregunta es si se puede restaurar sin conocer las credenciales de acceso del SQL que se conecte de forma "automática", por ejemplo que el sistema se tenga que instalar en una PC con la cual no voy a tener contacto, que solamente baste con instalar el motor SQL y cuando se restaura se conecte directamente al motor, sin tener que acceder a SQL para ver el nombre de usuario.

    Teniendo en cuenta que quiero evitar el uso de servidores
    lunes, 6 de febrero de 2017 13:37
  • En el desplegable que señalas puedes, como te dice willams, elegir dos opciones autenticación Windows y autenticación sql.

    Si el usuario que instala el SQL Server, tiene privilegios suficientes para instalarlo, nada mas instalarlo y sin poner contraseña puede conectarse. En resumen la respuesta es si, puede hacerse, de hecho en el código que tu comentas en estas líneas

     // for Windows Authentication
        if(userName == "")
        {
            SqlConnection sqlCon = new SqlConnection
    	(@"Data Source="+serverName+@"; Integrated Security=True;");
            connection = new ServerConnection(sqlCon);    
        }
        // for Server Authentication
        else
        connection = new ServerConnection(serverName, userName, password);
    

    hace exactamente eso, IntregrateSecurity=true evita que tengas que conocer credenciales algunas.


    Comparte lo que sepas, aprende lo que no sepas (FGG)
    portalSQL
    El rincón del DBA

    • Marcado como respuesta Federico32113 martes, 7 de febrero de 2017 0:27
    lunes, 6 de febrero de 2017 15:41
    Moderador
  • -Solamente con la instalación del motor de la base SQL ,express en mi caso, y la posterior del sistema con el código incluido ¿tendría que poder obtener la cadena y conectarse a la base?Sin tener que ejecutar SQL ni una vez.


    lunes, 6 de febrero de 2017 16:23
  • Federico32113,

    ¿Tienes alguna necesidad expresa de usar autenticación por SQL Server?. Ya te ha comentado Miguel que tienes dos formas para conectarte a una instancia de SQL Server: Autenticación de Windows y Autenticación de SQL Server. Pues para el propósito -e incluso es aconsejable- puedes tomar la autenticación de Windows quedando la cadena de conexión de la siguiente manera:

    connectionString="Data Source=(local); Initial Catalog=NombreBaseDatos; Integrated Security=SSPI"

    Suficiente, no necesitas saber nada más, ni siquiera el nombre del servidor porque (local) hace referencia a la instancia que se ejecuta en el equipo local. Si insistes en un usuario y contraseña mucho no tengo por decir.

    Finalmente, ¿cómo despliegas la base de datos?. Ya te había comentado que no basta con colocar los archivos de datos y transacciones en un ruta y esperar que la instalación de SQL Server los tome, debes restaurar un medio de copia de seguridad o adjuntar el archivo de datos que creo es lo conveniente ya que indicas que el proceso de instalación copia en una carpeta los archivos de datos y transacciones. ¿Y cómo se restaura o adjunta?, pues depende, puedes crear un script y ejecutarlo como parte del proceso de instalación o tenerlo como parte de tu aplicación en un módulo -entiendo- de configuración inicial. Te dejo unos enlaces con información que puede servirte para el propósito.

    How to: Attach a Database File to SQL Server Express

    How to attach database from winforms using C#


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    • Marcado como respuesta Federico32113 martes, 7 de febrero de 2017 0:27
    lunes, 6 de febrero de 2017 19:43
  • Gracias Willams pude obtener la cadena de la forma que me indicas.

    Ya hice el script  ahora tratare de generarlo cuando se instala o mediante la configuración inicial.

    lunes, 6 de febrero de 2017 23:27