CORRECÇÃO: Chamada remoto procedimento armazenado dentro do procedimento armazenado local ao passar o parâmetro de texto causa AV

Traduções deste artigo Traduções deste artigo
ID do artigo: 299366 - Exibir os produtos aos quais esse artigo se aplica.
BUG #: 351307 (SHILOH_BUGS)
Expandir tudo | Recolher tudo

Neste artigo

Sintomas

Chamar um procedimento armazenado remoto dentro de um procedimento armazenado local ao passar um parâmetro de texto pode causar uma violação de acesso (VA) no servidor local.

Esse problema foi isolado para as seguintes condições:
  • No servidor de destino, há um procedimento armazenado que aceita um parâmetro de texto (ou NTEXT).
  • Em servidor de origem, há um procedimento armazenado local que chama o procedimento armazenado remoto no servidor de destino pelo nome totalmente qualificado ao passar um parâmetro de texto (ou NTEXT).

Resolução

Para resolver esse problema, obtenha o service pack mais recente para o SQL Server 2000. Para obter informações adicionais, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
290211INF: Como obter o Service Pack mais recente do SQL Server 2000

Como Contornar

Modificar o campo de texto (ou NTEXT) diretamente, em vez de fazer chamadas de procedimento armazenado.

Situação

A Microsoft confirmou que este é um problema no SQL Server 2000. Esse problema foi corrigido primeiro no SQL Server 2000 Service Pack 1.

Mais Informações

Etapas para reproduzir o problema

As seguintes etapas reproduzir o problema no SQL Server 2000 compilação 8.00.194:
  1. No servidor de origem, crie um servidor vinculado para o servidor de destino.
  2. Se conecte a servidor de origem usando o Query Analyzer e execute a seguinte consulta:
    use pubs
    go
    
    CREATE procedure sp_local
    @ptxtText TEXT
    as
    exec destination_servername here.pubs.dbo.sp_remote  @ptxtText
    GO
    					
  3. No servidor de destino, crie um procedimento armazenado da seguinte maneira:
    use pubs
    go
    
    create procedure sp_remote
    @ptxtTest TEXT
    as
    go
    					
  4. Execute a seguinte consulta no servidor de origem:
    sp_local 'mytest'
    					
    ocorre uma violação de acesso no servidor de origem.
-------------------------------------------------------------------------------
Short Stack Dump
00000000 Module(sqlservr+FFC00000)
006D6FF9 Module(sqlservr+002D6FF9) (CXVariant::ClearDeep(void)+00000047)
0040A849 Module(sqlservr+0000A849) (CXVariant::Clear(void)+0000000D)
006134D6 Module(sqlservr+002134D6)(CExecParamTbl::ResetTextParams(void)+00000046)
0079726F Module(sqlservr+0039726F) (CRuleCollection::LoadRules(class IMemObj *)+00004B19)
-------------------------------------------------------------------------------
				

Propriedades

ID do artigo: 299366 - Última revisão: quarta-feira, 5 de novembro de 2003 - Revisão: 3.2
A informação contida neste artigo aplica-se a:
  • Microsoft SQL Server 2000 Standard Edition
Palavras-chave: 
kbmt kbbug kbfix kbsqlserv2000sp1fix KB299366 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: 299366

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