Вы находитесь на странице: 1из 4

Ejecutar Scripts Sql Server con C# y Visual Basic.

NET
En este artculo 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 lnea de comandos de SQL Server. Esta lnea de comandos nos permite ejecutar scripts T-SQL. SQLCMD es un mtodo rpido 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 cdigo vamos a llamar al proceso SQLCMD. Al final del artculo tendrn una aplicacin de ejmplo con un botn con una llamada a un script .sql. En este caso, el script generar una copia de seguridad de la base de datos:

El botn "llamar a SQLCMD" crear una copia de seguridad utilizando la clase ProcessStartInfo. Para mayor referencia acerca de la clase ProcessStartInfo, el sqlcmd y ejecucin scripts con sqlcmd puedes leer aqu.

Los archivos includos: 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.

Demostracin

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 lnea de comandos y ejecuta la siguiente sentencia:

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

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

Explicacin
-S .\sqlexpress (la S est en maysculas) indica el nombre del servidor. En este caso es la mquina local y una instancia SQL Server Express. Por ejemplo, si ests utilizando la instancia por defecto y el nombre del servidor es Server1 y el dominio del Directorio Activo es llamado sqlcentral, la lnea de comandos podra ser:

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

El parametro -i es la entrada (es en minsculas) y c:\backup.sql es la ruta del script. Por defecto se utiliza la autentificacin por Windows.

Utilizando un Windows Form en C# para llamar a SQLCMD


Tenemos una lnea de comandos SQL que crea una copia de seguridad de SQL Server. Ahora vamos a crear una aplicacin Windows en C# que llame a SQLCMD. Dentro del formulario arrastraremos un botn desde el cuadro de Herramientas de Visual Studio. El botn llamar a la lnea de comandos sqlcmd para crear la copia de seguridad llamada test utilizando sqlcmd. Haz doble click en el botn y agrega el siguiente cdigo:

using System.Diagnostics;

Tambin:

// 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 seccin estamos llamando a sqlcmd y ejecutando el script backup.sql utilizando la clase processStartInfo. Es el ncleo del cdigo. El resto es solo la configuracin nde los parmetros del proceso. El cdigo est llamando a la instancia del servidor SQL Express utilizando el parametro -S. El parmetro -i es la entrada. En este ejemplo la entrada es el script backup.sql. La autentificacin utilizada es la autentificacin por Windows, mientras el usuario que ejecute la aplicacin tenga permisos en la base de datos, no habr problemas.

Probando tu cdigo
Ahora presiona el botn Ejecutar en Visual Studio y haz click en el botn del formulario. Una nueva copia de seguridad debera crearse en c:\backup.

Conclusin
En este artculo vemos como llamar a sqlcmd y ejecutar un script Sql utilizando visual studio.

Вам также может понравиться