Política de suporte para assemblies de .NET Framework não testados no ambiente hospedado por CLR SQL Server

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

Versão original do produto: SQL Server
Número de KB original: 922672

Teste e suporte do assembly

Quando você registra um assembly que faz referência a um assembly de .NET Framework não testado no SQL Server, você pode receber a seguinte mensagem de aviso:

Assembly AssemblyName do .Net frameworks que você está registrando não é totalmente testado em SQL Server ambiente hospedado.

A mensagem significa que o assembly .NET Framework não foi testado no SQL Server ambiente hospedado pelo CLR. Portanto, não há suporte para o assembly no ambiente hospedado SQL Server CLR.

Um assembly de .NET Framework não testado pode sair de seu processo de host quando ocorre uma condição crítica, como a condição de baixa memória. Você pode usar o assembly no SQL Server ambiente hospedado por CLR por sua conta e risco. No entanto, SQL Server CSS (Customer Support Services) não ajudará você a usar e solucionar problemas associados a um assembly .NET Framework sem suporte. Se o CSS determinar que um assembly sem suporte específico causa problemas SQL Server, você poderá ser solicitado a parar de usar o assembly. Além disso, você pode ser solicitado a parar de usar o assembly temporariamente quando o CSS solucionar um problema SQL Server específico, se for necessário.

Registro de assembly

Há dois tipos de assemblies .NET: puro e misto. Os assemblies .NET puros contêm apenas instruções MSIL. Os assemblies mistos contêm instruções de computador não gerenciadas e instruções MSIL. Os assemblies mistos em geral são compilados em um compilador C++ usando o comutador "clr" e também contêm instruções do computador criadas a partir do código C++ nativo.

Quando você usa um assembly de .NET Framework que não está na lista com suporte, é necessário usar a CREATE ASSEMBLY instrução para registrar o assembly e os assemblies referenciados em SQL Server banco de dados. A instrução SQL Server CREATE ASSEMBLY permite que apenas assemblies de .NET Framework pura sejam registrados. Se o assembly ou qualquer assembly referenciado não for um assembly de .NET Framework puro (e, portanto, for um assembly misto), você receberá a seguinte mensagem de erro:

Msg 6544, Nível 16, Estado 1, Linha 2
O CREATE ASSEMBLY para assembly '<assembly name>' falhou porque o '<nome> do assembly' do assembly está malformado ou não é um assembly .NET puro.
Cabeçalho pe não verificável/stub nativo.

Nesse caso, você não pode usar o assembly .NET Framework junto com o SQL CLR, a menos que o assembly esteja na lista com suporte documentada neste artigo. Além disso, um assembly .NET Framework pode ser alterado de um assembly puro para um assembly misto entre versões. Se você usar um assembly que não esteja na lista com suporte, poderá ter uma situação em que o assembly funciona em uma versão do .NET Framework, mas não em outra. Essa restrição não se aplica aos assemblies na lista com suporte porque esses assemblies não são necessários para serem registrados usando a CREATE ASSEMBLY instrução.

Além disso, você deve manter esses assemblies depois de atualizar o .NET Framework. A seguinte mensagem de erro é mostrada quando você executa uma rotina CLR ou usa um assembly no SQL Server:

O assembly no host store tem uma assinatura diferente do assembly no GAC. (Exceção de HRESULT: 0x80131050)

Assemblies com suporte em um ambiente hospedado por CLR SQL Server

Os seguintes assemblies de .NET Framework têm suporte em um ambiente hospedado SQL Server CLR:

  • 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