Receber uma mensagem de erro ao executar um aplicativo, o script ou a funcionalidade partir de uma instalação anterior do SQL Server que usa recursos comuns de tempo de execução de linguagem no SQL Server 2008 ou no SQL Server 2008 R2: "Ocorreu um erro do .NET Framework"

Traduções deste artigo Traduções deste artigo
ID do artigo: 955629 - Exibir os produtos aos quais esse artigo se aplica.
Expandir tudo | Recolher tudo

Neste artigo

Sintomas

Após atualizar para Microsoft SQL Server 2008 ou Microsoft SQL Server 2008 R2, quando você executa um aplicativo, um script ou uma funcionalidade partir uma instalação anterior do Microsoft SQL Server que usa recursos de runtime (CLR) de linguagem comum, você receber uma mensagem de erro semelhante a seguinte mensagem de erro:
Msg 6522, nível 16, estado 1, linha 1

Ocorreu um erro do .NET Framework durante execução da rotina definida pelo usuário ou agregada routine name:

System.InvalidOperationException: Acesso de dados não é permitido neste contexto. Tanto o contexto é uma função ou método não marcado com DataAccessKind.Read ou SystemDataAccessKind.Read, é um retorno de chamada para obter dados do método FillRow de uma função de valor de tabela ou é um método de validação de UDT.

System.InvalidOperationException
Por exemplo, esse problema pode ocorrer nas seguintes situações.

Cenário 1

Você usar um método que possui as seguintes características:
  • O método usa uma função definida pelo usuário CLR, um método de tipo definido pelo usuário (UDT) ou uma agregação definida pelo usuário que executa a representação.
  • O método usa um objeto grande (LOB) como um parâmetro.
  • O método não usa a propriedade DataAccesKind.Read no método.

Cenário 2

Use o método INIT em uma função table valued CLR que executa a representação.

Cenário 3

Use o método FillRow em uma função table valued CLR que executa a representação.

Causa

Esse problema ocorre devido a uma alteração nos recursos do mecanismo de banco de dados do SQL Server 2008 e no SQL Server 2008 R2.

Como Contornar

Para contornar o problema conforme descrito em cenários de na seção "Sintomas", use um dos seguintes métodos.

Método 1: Para solucionar esse problema no cenário 1 e no cenário 2

Para contornar esse problema, adicione a propriedade DataAccessKind.Read ao método.

Método 2: Para solucionar esse problema na situação 3

Para contornar esse problema, faça o seguinte:
  • Remova representação do método FillRow.
  • Não acesse recursos externos por meio do método FillRow.
  • Acesso a recursos externos somente por meio do método INIT da função table valued.

Referências

Para obter informações sobre a propriedade DataAccessKind.Read e outros atributos personalizados para rotinas de CLR, visite o seguinte site da Microsoft TechNet:
http://technet.microsoft.com/en-us/library/ms131050.aspx
Para obter informações sobre alterações significativas nos recursos de mecanismo de banco de dados do SQL Server 2008, visite o seguinte site da Microsoft TechNet:
http://technet.microsoft.com/en-us/library/ms143179(SQL.100).aspx

Propriedades

ID do artigo: 955629 - Última revisão: quinta-feira, 19 de março de 2009 - Revisão: 2.1
A informação contida neste artigo aplica-se a:
  • Microsoft SQL Server 2008 Developer
  • Microsoft SQL Server 2008 Enterprise
  • Microsoft SQL Server 2008 Express
  • Microsoft SQL Server 2008 Express with Advanced Services
  • Microsoft SQL Server 2008 Standard
  • Microsoft SQL Server 2008 Web
  • Microsoft SQL Server 2008 Workgroup
  • Microsoft SQL Server 2008 R2 Datacenter
  • Microsoft SQL Server 2008 R2 Developer
  • Microsoft SQL Server 2008 R2 Enterprise
  • Microsoft SQL Server 2008 R2 Express
  • Microsoft SQL Server 2008 R2 Express with Advanced Services
  • Microsoft SQL Server 2008 R2 Standard
  • Microsoft SQL Server 2008 R2 Standard Edition for Small Business
  • Microsoft SQL Server 2008 R2 Workgroup
Palavras-chave: 
kbmt sql2008relnotedatabaseengine sql2008relnote kbprogramming kbautomation kberrmsg kbtshoot kbexpertiseinter kbprb KB955629 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 955629

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com