El CLR de Sql Server Procedimientos almacenados en .NET (I) « Devthisblog

Devthisblog Desarrollo .net, Diseño Web, Seguridad… Y todo lo que se me vaya ocurriendo…

junio 9, 2013

El CLR de Sql Server Procedimientos almacenados en .NET (I)

Filed under: .net,BBDD,Programación,Tips,Uncategorized — Etiquetas: , , , , , — jnavero @ 11:25 am

Hoy toca programar un poco de SQL Server. En este post voy a mostrar como hacer un procedimiento almacenado con código .NET. Es una tarea sencilla, sin duda pero, que dota de una gran potencia para nuestras consultas de SQL Server.

Para comenzar vayamos a Visual Studio 2010 (en mi caso ya que tengo las herramientas ahí). En 2012 la cosa cambia un poco pero, es muy similar.

NuevoProyecto

 Es importante seleccionar el Framework 3.5 ya que SQL Server no soporta uno superior .

Al pulsar sobre el botón aceptar, nos solicita agregar una referencia a nuestra base de datos.

 referencia

 Podemos agregar una nueva o seleccionar la que ya tenemos, en realidad es una conexión normal a una base de datos. Si todo está correcto nos crea el proyecto con un test para poder hacer las pruebas.

Ahora podemos seleccionar el tipo de objeto que deseamos programar, estos pueden ser, Funciones de usuario, procedimientos almacenados, disparadores ect. De momento solamente hablare de los procedimientos almacenados.

Sobre la solución pulsamos al botón derecho del ratón y agregamos un nuevo procedimiento almacenado, esto nos creará el archivo en C# con el esqueleto de nuestro procedimiento.

En este primer procedimiento solamente mostraremos en pantalla Hola mundo. El código es el siguiente:

 C# | 
 
 copy code |
?

01
using System;
02
using System.Data;
03
using System.Data.SqlClient;
04
using System.Data.SqlTypes;
05
using Microsoft.SqlServer.Server;
06
 
07
 
08
public partial class StoredProcedures
09
{
10
    [Microsoft.SqlServer.Server.SqlProcedure]
11
    public static void Proc1()
12
    {
13
         SqlContext.Pipe.Send("Hola Mundo");
14
    }
15
};
16

Llegados a este punto, ya tenemos el procedimiento pero hay un pequeño problema y es que es necesario habilitar unos permisos “especiales” en SQL Server para poder ejecutar Ensamblados. Para poder habilitar estos permisos, debemos ejecutar lo siguiente en SQL SERVER:

 PL/SQL | 
 
 copy code |
?

1
2
sp_configure 'clr enabled', 1;
3
GO
4
RECONFIGURE;
5
GO
6

clr enabled 1 habilita la integración del CLR en SQL Server mientras que 0 lo desabilita.

Generamos el código anterior y vamos a nuestra base de datos de SQL Server donde podemos ver lo siguiente:

EjemploSQL
Si miramos los procedimientos almacenados, están con un candado el cual indica que no se pueden modificar. Sin embargo si lo ejecutamos como cualquier procedimiento normal, se ejecuta como si de un procedimiento normal se tratase.

En la siguiente parte veremos otro ejemplo un poco mas complejo.

2 Comments »

  1. […] ← El CLR de Sql Server Procedimientos almacenados en .NET (I) […]

    Pingback by El CLR de Sql Server Procedimientos almacenados en .NET (II) | Developer's Diary — junio 13, 2013 @ 8:20 pm

  2. […] los post anteriores veíamos como crear procedimientos almacenados además de ver un procedimiento almacenado un poco mas […]

    Pingback by Problemas de seguridad con el CLR de SqlServer | Developer's Diary — junio 15, 2013 @ 4:35 pm

RSS feed for comments on this post. TrackBack URL

Leave a comment

Powered by WordPress