Estou no meio da migração de um banco de dados para o Azure SQL Database. Eu estava lendo sobre as diferenças entre o Azure SQL Database e o Azure Managed Instance e notei que as funções CLR NÃO são suportadas no Azure SQL Database.
Isso me surpreendeu, pois já carreguei uma versão de teste do banco de dados no Azure SQL Database e ninguém reclamou de problemas. Dei uma olhada e, com certeza, o assembly CLR está lá e executar consultas que usam as funções CLR funciona muito bem.
Então fui pesquisar na web, e todas as informações que vejo são que o CLR não funciona com o Azure SQL Database. No entanto, aqui estou eu, com um assembly CLR funcionando no Azure SQL Database.
Então agora estou pensando, digo à empresa que temos que mudar para usar a Instância Gerenciada porque esse é o único lugar onde o CLR é suportado? Ou continuo com o Banco de Dados SQL do Azure porque está funcionando bem? Ou esqueci de alguma coisa? A Microsoft reativou o CLR sem avisar ninguém?
Resumindo, o CLR funciona tecnicamente no Azure SQL DB, mas geralmente é desabilitado para locatários. Ele pode ser habilitado, mas é caso a caso e sujeito a qualquer decisão da Microsoft - que pode ser que ela não vá mais habilitá-lo seletivamente.
A posição oficial é que ele não é compatível com o Banco de Dados SQL do Azure, e você deve usar a posição oficial na sua tomada de decisão.
Por enquanto, pode não ficar assim. Talvez sua organização tenha tido força suficiente para fazer com que a Microsoft o habilitasse para você.
Se você precisa usar CLR, então sim. Você também não pode usar a nuvem e executar seu próprio servidor de banco de dados. Há também muitos outros hosts de nuvem por aí que podem executar CLR, o que pode ser mais barato/rápido do que MI.
não deveria ser possível usar apenas um novo CLR aleatório no Banco de Dados SQL do Azure. A única possibilidade suportada seria se esse CLR específico já tivesse sido permitido antes pela Microsoft. Algo está estranho aqui. Se você tiver um contato na Microsoft, pode ser uma boa ideia informá-lo.
PS: Eu era o responsável pelo processo de manipulação de assemblies CLR no Azure SQL DB na Microsoft, mas obviamente não posso entrar em detalhes sobre como isso é feito.
"Não suportado" não é o mesmo que "não funciona". No entanto, é o mesmo que "a Microsoft reserva o direito de puxar esse tapete em particular debaixo de você a qualquer momento, e se isso acontecer e você estiver dependendo do dito tapete, você não tem ninguém além de si mesmo para culpar".
Então sim, você precisa usar o Managed Instance. Ou você pode trazer seu software para a década atual e abandonar o suporte ao SQLCLR.