In un computer con Microsoft Data Access Components 2.8, un'applicazione riceve un valore non corretto per la colonna di identitÓ da un database di SQL Server 2005

Traduzione articoli Traduzione articoli
Identificativo articolo: 940569 - Visualizza i prodotti a cui si riferisce l?articolo.
Espandi tutto | Chiudi tutto

Sintomi

Si consideri lo scenario seguente. ╚ creare una tabella che include una colonna identity in un database di Microsoft SQL Server 2005. ╚ possibile configurare una replica di tipo merge nella tabella. Un'applicazione utilizza Microsoft ActiveX Data Objects (ADO) per inserire una riga nella tabella. Quindi, l'applicazione recupera la riga inserita. Tuttavia, un valore non corretto viene restituito per la colonna identity.

Questo problema si verifica quando il computer che esegue l'applicazione dispone di uno dei seguenti installate:
  • Windows Server 2003
  • Windows XP
  • Microsoft Data Access Components 2.8 (MDAC 2.8)
Questo problema non si verifica in un database di Microsoft SQL Server 2000.

Cause

Il processo di replica crea trigger di inserimento nella tabella. Quando dati vengono inseriti nella tabella, i trigger di inserimento utilizzano il @@ IDENTITY variabile anzichÚ la funzione SCOPE_IDENTITY . Di conseguenza, per il @@ IDENTITY variabile potrebbe restituire un valore di identitÓ non Ŕ nella tabella corrente.

Risoluzione

Per risolvere questo problema, Ŕ necessario installare l'hotfix descritto nell'articolo della Microsoft Knowledge Base riportato di seguito riportato:
961451FIX: ╚ visualizzato un valore non corretto quando il valore identity inserito l'ultimo si esegue query dopo aver utilizzato un cursore sul lato client, per inserire dati in una tabella contenente una colonna identity in un'applicazione che utilizza ActiveX Data Objects
Nota L'aggiornamento rapido Ŕ stato descritto nella sezione "Risoluzione" nella versione precedente di questo articolo Ŕ stato sostituito dall'hotfix descritto in 961451.

Status

Microsoft ha confermato che questo problema riguarda i prodotti sono elencati nella sezione "Si applica a".

Informazioni

La funzione SCOPE_IDENTITY e il @@ IDENTITY variabile restituiscono gli ultimi valori di identitÓ, che vengono generati in qualsiasi tabella della sessione corrente. Tuttavia, la funzione SCOPE_IDENTITY restituisce i valori vengono inseriti solo all'interno dell'ambito corrente. Il @@ IDENTITY variabile non limita l'inserimento a un ambito specifico.

Si supponga ad esempio, che il database contiene un Table1 e Table2 un. Entrambe le tabelle includere colonne di identitÓ. Un trigger di inserimento Ŕ definito in Table1. Quando viene inserita una riga in Table1, il trigger inserisce una copia della riga in tabella2. Questo scenario prevede i seguenti due ambiti:
  • Inserimento in Table1
  • Inserimento in Table2 dal trigger
In questo scenario, il @@ IDENTITY variabile e la funzione SCOPE_IDENTITY restituiscono valori di diversi quando viene inserita una riga in Table1. Il @@ IDENTITY variabile restituisce l'ultimo valore di colonna del identitÓ che viene inserito in tutti gli ambiti nella sessione corrente. In questo caso, il @@ IDENTITY variabile restituisce valore identity inserito in tabella2. Tuttavia, Ŕ possibile che la funzione SCOPE_IDENTITY restituisce il valore identitÓ che viene inserito in Table1, poichÚ la funzione SCOPE_IDENTITY restituisce il valore che viene inserito l'ultimo nello stesso ambito. La funzione SCOPE_IDENTITY restituisce il valore NULL se la funzione viene richiamata prima tutte le istruzioni INSERT apportate a una colonna di identitÓ nell'ambito.

Per ulteriori informazioni sulla terminologia di aggiornamento software, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito riportato:
824684Descrizione della terminologia standard utilizzata per descrivere gli aggiornamenti software Microsoft

ProprietÓ

Identificativo articolo: 940569 - Ultima modifica: martedý 25 agosto 2009 - Revisione: 2.0
Le informazioni in questo articolo si applicano a:
  • Microsoft Windows Server 2003, Standard Edition (32-bit x86)
  • Microsoft Windows Server 2003, Enterprise Edition (32-bit x86)
  • Microsoft Windows Server 2003, Web Edition
  • Microsoft Windows Server 2003, Datacenter Edition (32-bit x86)
  • Microsoft Windows Server 2003, Standard x64 Edition
  • Microsoft Windows Server 2003, Enterprise x64 Edition
  • Microsoft Windows Server 2003, Datacenter x64 Edition
  • Microsoft Windows Server 2003, Enterprise Edition for Itanium-based Systems
  • Microsoft Windows Server 2003, Datacenter Edition for Itanium-Based Systems
  • Microsoft Windows XP Professional
  • Microsoft Windows XP Home Edition
  • Microsoft Windows XP Professional x64 Edition
  • Microsoft Data Access Components 2.8
Chiavi:á
kbmt kbautohotfix kbwinxppresp3fix kbexpertiseinter kbwinserv2003postsp2fix kbbug kbfix kbhotfixserver kbqfe KB940569 KbMtit
Traduzione automatica articoli
Il presente articolo Ŕ stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell?utente. Tuttavia, un articolo tradotto in modo automatico non Ŕ sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, pi¨ o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non Ŕ la sua. Microsoft non Ŕ responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell?utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.
Clicca qui per visualizzare la versione originale in inglese dell?articolo: 940569
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.

Invia suggerimenti

 

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