Não há suporte para usar procedimentos armazenados estendidos ou SP_OA procedimentos armazenados para carregar o CLR no SQL Server
Versão original do produto: SQL Server
Número de KB original: 322884
Resumo
SQL Server versões 2005 e posteriores hospedam CLR (Common Language Runtime) e dão suporte a procedimentos, funções, gatilhos, tipos e agregações que são escritos em idiomas CLR. Nessas versões, você não pode carregar CLR usando procedimentos armazenados estendidos ou sp_OA
procedimentos armazenados.
Versão original do produto: SQL Server
Número de KB original: 322884
Mais informações
O assembly System.Runtime.InteropServices
.NET Framework fornece um ambiente robusto para invocar assemblies de código não gerenciado. No entanto, há várias discordâncias técnicas entre as implementações internas do CLR e SQL Server.
Threading
Para aumentar o desempenho, o CLR implementa o Armazenamento Local do Thread.
Além disso, o CLR usa apenas agendamento baseado em thread e não dá suporte ao agendamento do modo de fibra. No entanto, SQL Server pode usar o agendamento do modo de fibra. Para configurar essa propriedade, execute o sp_configure
procedimento armazenado usando a opção de pooling leve. Para obter mais informações sobre este tópico, confira opção de configuração do servidor de pools leves.
Memória
O uso de procedimentos armazenados estendidos e a Automação OLE são executados no espaço de endereço de memória virtual da memória de SQL Server. O padrão SQL Server memória é apenas uma fração da memória que SQL Server pode potencialmente usar e o CLR compete com quaisquer implementações existentes para esses recursos de memória.
Interoperabilidade COM
Esta seção aborda especificamente o uso da Automação OLE no SQL Server e se aplica a objetos COM em processo e fora de processo. Os metadados de assembly para interfaces de função implementam um mecanismo digitado para quaisquer invocações.
Como parte desse design, o wrapper COM Callable para um assembly deve usar um mecanismo externo de mapeamento de um ClassID para um membro de uma classe gerenciada. Devido a esse mapeamento explícito, não há capacidade de uma perspectiva não gerenciada de estabelecer uma lista raiz de interfaces disponíveis.
O procedimento sp_oaCreate
armazenado estendido usa a IUnknown::QueryInterface
interface para determinar o suporte do objeto para uma interface específica. A interoperabilidade entre CLR e código não gerenciado depende da interface IDispatch para implementar interfaces. Como não há equivalente a um QueryInterface
método em um assembly baseado em CLR, você não pode criar uma instância do objeto.
Comentários
https://aka.ms/ContentUserFeedback.
Brevemente: Ao longo de 2024, vamos descontinuar progressivamente o GitHub Issues como mecanismo de feedback para conteúdos e substituí-lo por um novo sistema de feedback. Para obter mais informações, veja:Submeter e ver comentários