sql >> Base de Datos >  >> RDS >> Sqlserver

SQL Server 2008:qué tan seguro es un procedimiento almacenado CLR que carga bibliotecas no administradas

Dado que este código se usó originalmente con procedimientos almacenados extendidos, parece que es un código no administrado. Los errores en el código no administrado pueden bloquear fácilmente su proceso.

La integración de CLR es mucho más sólida que los procedimientos almacenados extendidos, pero el código aún se ejecuta en el proceso, por lo que los errores pueden desactivar o dañar SQL Server. (A modo de comparación, en teoría, una rutina SAFE CLR no podrá corromper SQL Server, aunque incluso podría causar problemas que reduzcan la disponibilidad de su servidor sin desactivar por completo el SQL Server).

Básicamente, las únicas formas de no bloquear SQL Server en este escenario son:

  1. Evite usar la funcionalidad que falla.
  2. Corrige el código de error.
  3. Ejecute el código en un proceso separado (inicie un ejecutable, llame a un servicio de Windows, llame a un servicio web, etc.). Puede escribir una DLL de .NET administrada para realizar esta interacción. Lo más probable es que aún necesite cargarlo UNSAFE, pero, si está escrito correctamente, en realidad puede ser bastante seguro.