Compartilhar via


Política de suporte para assemblagens do .NET Framework não testadas no ambiente alojado no CLR do SQL Server

Este artigo descreve a política de suporte para assemblagens não testadas do Microsoft .NET Framework no ambiente alojado em CLR (common language runtime) do .NET Framework no SQL Server.

Versão original do produto: SQL Server
Número original da BDC: 922672

Teste e suporte de assemblagem

Quando regista uma assemblagem que referencia uma assemblagem do .NET Framework não testada no SQL Server, poderá receber a seguinte mensagem de aviso:

A assemblagem assembly AssemblyName do .Net Frameworks que está a registar não é totalmente testada no ambiente alojado do SQL Server.

A mensagem significa que a assemblagem do .NET Framework não foi testada no ambiente alojado no CLR do SQL Server. Por conseguinte, a assemblagem não é suportada no ambiente alojado no CLR do SQL Server.

Uma assemblagem do .NET Framework não testada pode sair do processo de anfitrião quando ocorre uma condição crítica, como condição de memória baixa. Pode utilizar a assemblagem no ambiente alojado em CLR do SQL Server por sua conta e risco. No entanto, os Serviços de Suporte ao Cliente (CSS) do SQL Server não o ajudarão a utilizar e a resolver problemas associados a uma assemblagem do .NET Framework não suportada. Se o CSS determinar que uma determinada assemblagem não suportada causa problemas do SQL Server, poderá ser-lhe pedido para parar de utilizar a assemblagem. Além disso, poderá ser-lhe pedido para parar de utilizar a assemblagem temporariamente quando o CSS resolver um problema específico do SQL Server, se for necessário.

Registo de assemblagem

Existem dois tipos de assemblagens .NET: puras e mistas. As assemblagens .NET puras contêm apenas instruções MSIL. As assemblagens mistas contêm instruções de máquina não geridas e instruções MSIL. As assemblagens mistas em geral são compiladas num compilador C++ com o comutador "clr" e também contêm instruções de máquina criadas a partir de código C++ nativo.

Quando utiliza uma assemblagem .NET Framework que não está na lista suportada, tem de utilizar a CREATE ASSEMBLY instrução para registar a assemblagem e as assemblagens referenciadas na base de dados do SQL Server. A instrução do SQL Server CREATE ASSEMBLY permite registar apenas assemblagens .NET Framework puras. Se a assemblagem ou qualquer assemblagem referenciada não for uma assemblagem .NET Framework pura (e, portanto, for uma assemblagem mista), receberá a seguinte mensagem de erro:

Msg 6544, Nível 16, Estado 1, Linha 2
A FUNÇÃO CREATE ASSEMBLY para a assemblagem "<nome> da assemblagem" falhou porque a assemblagem "<assembly name>" está mal formaada ou não é uma assemblagem .NET pura.
Cabeçalho PE inverificável/stub nativo.

Neste caso, não pode utilizar a assemblagem .NET Framework juntamente com o SQL CLR, a menos que a assemblagem esteja na lista suportada documentada neste artigo. Além disso, uma assemblagem .NET Framework pode mudar de uma assemblagem pura para uma assemblagem mista entre versões. Se utilizar uma assemblagem que não esteja na lista suportada, poderá ter uma situação em que a assemblagem funciona numa versão do .NET Framework, mas não noutra. Esta restrição não se aplica às assemblagens na lista suportada porque estas assemblagens não têm de ser registadas com a CREATE ASSEMBLY instrução .

Além disso, tem de manter estas assemblagens depois de atualizar o .NET Framework. A seguinte mensagem de erro é apresentada quando executa uma rotina CLR ou utiliza uma assemblagem no SQL Server:

A assemblagem no arquivo de anfitriões tem uma assinatura diferente da assemblagem no GAC. (Exceção de HRESULT: 0x80131050)

Assemblagens suportadas num ambiente alojado em CLR do SQL Server

As seguintes assemblagens do .NET Framework são suportadas num ambiente alojado em CLR do SQL Server:

  • Microsoft.VisualBasic.dll

  • Mscorlib.dll

  • System.Data.dll

  • System.dll

  • System.Xml.dll

  • Microsoft.VisualC.dll

  • CustomMarshalers.dll

  • System.Security.dll

  • System.Web.Services.dll

  • System.Data.SqlXml.dll

  • System.Transactions.dll

  • System.Data.OracleClient.dll

  • System.Configuration.dll