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.
0 responses so far ↓
There are no comments yet...Kick things off by filling out the form below.
Leave a Comment