Ejecutar Scripts Sql Server con C# y Visual Basic.NET

En este artículo veremos como se puede ejecutar un Script SQL Server para realizar una copia de seguridad utilizando C# en Visual Studio con la ayuda de SQLCMD. SQLCMD es la línea de comandos de SQL Server. Esta línea de comandos nos permite ejecutar scripts T-SQL. SQLCMD es un método rápido y sencillo de ejecutar scripts. En Visual Studio estaremos llamando a SQLCMD utilizando la clase ProcessStartInfo. Esta clase es utilizada para iniciar procesos. En este código vamos a llamar al proceso SQLCMD. Al final del artículo tendrán una aplicación de ejmplo con un botón con una llamada a un script .sql. En este caso, el script generará una copia de seguridad de la base de datos:

El botón "llamar a SQLCMD" creará una copia de seguridad utilizando la clase ProcessStartInfo. Para mayor referencia acerca de la clase ProcessStartInfo, el sqlcmd y ejecución scripts con sqlcmd puedes leer aquí.

 Los archivos incluídos: pruebas.zip es la copia de seguridad de la base de datos y callSQLcmd.zip es el proyecto en Visual Studio 2010 para c# y Vb.NET.

Demostración

Primero que todo hay que crear un script llamado backup.sql para realizar la copia de seguridad de la base de datos. El nombre del script es backup.sql y contiene:


BACKUP DATABASE [Pruebas] TO DISK = N'C:\backup\pruebas.bak' WITH NOFORMAT, NOINIT, NAME = N'test-Full Database Backup', SKIP, NOREWIND, NOUNLOAD, STATS = 10
GO


Este script creará una copia de seguridad de la base de datos de prueba. Para ejecutar el script backup.sql utilizando sqlcmd, ve a la ventana de línea de comandos y ejecuta la siguiente sentencia:


sqlcmd -S .\sqlexpress -i C:\backup.sql 

o

sqlcmd -S Usuario-PC -i C:\backup.sql 


Explicación

-S .\sqlexpress (la  –S está en mayúsculas) indica el nombre del servidor. En este caso es la máquina local y una instancia SQL Server Express. Por ejemplo, si estás utilizando la instancia por defecto y el nombre del servidor es Server1 y el dominio del Directorio Activo es llamado sqlcentral, la línea de comandos podría ser:


sqlcmd -S sqlcentral\Server1 -i C:\backup.sql -i c:\backup.sql 


El parametro -i es la entrada (es en minúsculas) y  c:\backup.sql es la ruta del script. Por defecto se utiliza la autentificación por Windows.

Utilizando un Windows Form en C# para llamar a SQLCMD

Tenemos una línea de comandos SQL que crea una copia de seguridad de SQL Server. Ahora vamos a crear una aplicación Windows en C# que llame a SQLCMD. Dentro del formulario arrastraremos un botón desde el cuadro de Herramientas de Visual Studio. El botón llamará a la línea de comandos sqlcmd para crear la copia de seguridad llamada test utilizando sqlcmd. Haz doble click en el botón y agrega el siguiente código:


using System.Diagnostics; 


También:



// Indica si el cursor del sistema operativo es utilizado, en este caso no
UseShellExecute = false; 
//ninguna ventana nueva es requerida
info.CreateNoWindow = true; 
//The windows style will be hidden 
info.WindowStyle = ProcessWindowStyle.Hidden; 
//The output will be read by the starndar output process 
info.RedirectStandardOutput = true; 
Process proc = new Process(); 
proc.StartInfo = info; 
//Start the process 
proc.Start();


The most important section of the code is the following:


ProcessStartInfo info = new ProcessStartInfo("sqlcmd", @" -S  -i C:\backup\backup.sql"); 


En esta sección estamos llamando a sqlcmd y ejecutando el script backup.sql utilizando la clase processStartInfo. Es el núcleo del código. El resto es solo la configuración nde los parámetros del proceso. El código está llamando a la instancia del servidor SQL Express utilizando el parametro -S. El parámetro -i es la entrada. En este ejemplo la entrada es el script backup.sql. La autentificación utilizada es la autentificación por Windows, mientras el usuario que ejecute la aplicación tenga permisos en la base de datos, no habrá problemas.

Probando tu código

Ahora presiona el botón Ejecutar en Visual Studio y haz click en el botón del formulario. Una nueva copia de seguridad debería crearse en c:\backup.

 
Conclusión

En este artículo vemos como llamar a sqlcmd y ejecutar un script Sql utilizando visual studio.

Recursos

Descarga ejemplo para C# 
Descarga ejemplo para Vb.NET
Copia de seguridad Pruebas

1 comentario:

Rocio dijo...

Hace varios años que estudie programación y por eso me gustaría retomar esto, ya que en su momento disfrutaba de programar pero me fui olvidando. Como hace un poco de tiempo me compre un gran equipo de audio para escuchar musica, para cambiar mi computadora y tener una como la gente debo esperar un tiempo