Indigo’s Weblog (All about Microsoft.NET Framework)

Lanzar scripts sql desde nuestra aplicación

8 Mayo 2008 · No Comments

En algunas ocasiones puede ser necesario lanzar scripts sql complejos contra nuestro servidor Sql Server. Estos scripts la mayoría de la veces contienes la palabra GO. Si usamos el método ExecuteNonQuery veremos que nuestro script no se ejecuta correctamente ya que este detiene la ejecución al encontrarse con el primer GO.

La solución en este caso es usar el objeto Server. El código es realmente simple

ServerConnection serverConnection = null;
string sql = “<nuestro script sql>”;
SqlConnection sqlConnection = new SqlConnection(”<cadena de conexión>”);
serverConnection = new ServerConnection(sqlConnection);
Server server = new Server(serverConnection);
server.ConnectionContext.ExecuteNonQuery(sql);

Si lo queremos hacer transaccional usaremos

ServerConnection serverConnection = null;
try
{
string sql = “<nuestro script sql>”;
SqlConnection sqlConnection = new SqlConnection(”<cadena de conexión>”);
serverConnection = new ServerConnection(sqlConnection);
serverConnection.BeginTransaction();
Server server = new Server(serverConnection);
server.ConnectionContext.ExecuteNonQuery(sql);
serverConnection.CommitTransaction();
}
catch (Exception ex)
{
serverConnection.RollBackTransaction();
MessageBox.Show(ex.Message);
}

Sólo falta añadir que tendremos que hacer uso de la librerias

using Microsoft.SqlServer.Management.Common;
using Microsoft.SqlServer.Management.Smo;

Saludos.

Categories: .NET Framework · Sql Server
Etiquetado: , ,

0 responses so far ↓

  • There are no comments yet...Kick things off by filling out the form below.

Leave a Comment