Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

SQL Server 2008:Quão seguro contra falhas é um procedimento armazenado CLR que carrega bibliotecas não gerenciadas


Como esse código foi originalmente usado com procedimentos armazenados estendidos, parece que é um código não gerenciado. Bugs em código não gerenciado podem facilmente travar seu processo.

A integração CLR é muito mais robusta do que procedimentos armazenados estendidos, mas o código ainda é executado no processo, portanto, os erros podem derrubar ou corromper o SQL Server. (Para comparação, em teoria, uma rotina SAFE CLR não poderá corromper o SQL Server, embora possa causar problemas que reduzem a disponibilidade do servidor sem derrubar totalmente o SQL Server.)

Basicamente, as únicas maneiras de não travar o SQL Server neste cenário são:
  1. Evite usar a funcionalidade que trava.
  2. Corrija o código com erros.
  3. Execute o código em um processo separado (iniciar um executável, chamar um serviço do Windows, chamar um serviço da Web etc.). Você pode escrever uma DLL .NET gerenciada para realizar essa interação. Provavelmente, você ainda precisará carregá-lo INSEGURO, mas - se estiver escrito corretamente - na realidade, pode ser bastante seguro.