CORRECÇÃO: Server do lado do cursor poderão devolver valores incorrectos

Traduções de Artigos Traduções de Artigos
Artigo: 286788 - Ver produtos para os quais este artigo se aplica.
Erro n.º: 351513 (Shiloh_bugs)
N.º DE BUGS: 101092 (SQLBUG_70)
Expandir tudo | Reduzir tudo

Nesta página

Sintomas

Um cursor do lado servidor dinâmico ou orientado por conjunto de chaves, poderá devolver resultados incorrectos se as seguintes condições se verificarem:
  • A consulta utiliza uma instrução Sub-SELECT como uma lista de colunas.
  • O Sub-SELECT utiliza a função COUNT(*).
  • O Sub-SELECT tem uma associação de ANSI com uma condição.
  • A tabela cláusula FROM externa tem uma associação de Transact-SQL com um Sub-SELECT.

Resolução

SQL Server 2000

Para resolver este problema, obtenha o service pack mais recente do SQL Server 2000. Para obter informações adicionais, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
290211INF: How to Obtain the Latest SQL Server 2000 Service Pack

SQL Server 7.0

Para resolver este problema, obtenha o service pack mais recente do Microsoft SQL Server 7.0. Para obter informações adicionais, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
301511INF: How to Obtain the Latest SQL Server 7.0 Service Pack

Ponto Da Situação

A Microsoft confirmou que este é um problema nos produtos da Microsoft listados no início deste artigo.

SQL Server 2000
Este problema foi corrigido pela primeira vez no SQL Server 2000 Service Pack 1.

SQL Server 7.0
Este problema foi corrigido pela primeira vez no Microsoft SQL Server 7.0 Service Pack 4.

Mais Informação

Para reproduzir o problema, execute este código:
CREATE TABLE  TABLE1( T1COL1 int NOT NULL PRIMARY KEY)
go
CREATE TABLE  TABLE2(
 T2COL1 int NOT NULL PRIMARY KEY,
 T2COL2 int NOT NULL )
go

CREATE TABLE TABLE3(
	T3COL1 int NOT NULL)
go
Insert into TABLE1(T1COL1) values(4)
Insert into TABLE1(T1COL1) values(3)
Insert into TABLE2(T2COL1, T2COL2) values(5, 3)
Insert into TABLE2(T2COL1, T2COL2) values(6, 4)
Insert into TABLE3(T3COL1) values(6)
go

-------------- REPRO SCRIPT (Correct result would be 0,1) -------------
declare test cursor keyset for Select (select count(*)
      from dbo.TABLE2 as T2 join dbo.TABLE3 as T3 on T3.T3COL1 = T2.T2COL1
      where T2.T2COL2 = T1.T1COL1) as Para
 from dbo.TABLE1 as T1
open test
fetch test
fetch test
deallocate test


--------------- Workaround (Join condition moved to WHERE clause) ----------------
declare test cursor keyset local for Select (select count(*)
      from dbo.TABLE2 as T2, dbo.TABLE3 as T3 
      where T2.T2COL2 = T1.T1COL1 and T3.T3COL1 = T2.T2COL1) as Para
       from dbo.TABLE1 as T1

open test
fetch test
fetch test
deallocate test
				

Propriedades

Artigo: 286788 - Última revisão: 31 de outubro de 2003 - Revisão: 3.2
A informação contida neste artigo aplica-se a:
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 7.0 Standard Edition
Palavras-chave: 
kbmt kbbug kbfix kbsqlserv2000sp1fix KB286788 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 revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 286788

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