V počítači s nainstalovaným rozhraním Microsoft Data Access Components 2.8 obdrží aplikace z databáze serveru SQL Server 2005 nesprávnou hodnotu sloupce identity (Tento článek může obsahovat odkazy na anglický obsah (dosud nepřeložený).)

Překlady článku Překlady článku
ID článku: 940569 - Produkty, které se vztahují k tomuto článku.
Rozbalit všechny záložky | Minimalizovat všechny záložky

Příznaky

Předpokládejme následující situaci. Vytvořit tabulku obsahující sloupec identity v databázi 2005 Microsoft SQL Server. Konfigurace replikace korespondence na tabulce. Aplikace používá k vložení řádku v tabulce ActiveX Data Objects (ADO). Aplikace pak načte vloženého řádku. Však je vrácena nesprávná hodnota pro sloupec identity.

Tento problém nastane, když počítač spustí aplikace má jednu z následujících nainstalován:
  • Systém Windows Server 2003
  • na systém Windows XP
  • Microsoft Data Access Components 2.8 (MDAC 2.8)
Tento problém nenastává v databázi 2000 Microsoft SQL Server.

Příčina

Proces replikace vytvoří Vložit aktivační události v tabulce. Po vložení dat v tabulce použít aktivační procedury pro vložení @@ IDENTITY proměnné namísto funkce SCOPE_IDENTITY. Proto @@ IDENTITY proměnné může vrátit hodnotu identitu, která není v aktuální tabulce.

Řešení

Chcete-li tento problém vyřešit, nainstalujte opravu hotfix popsanou v následujícím článku znalostní báze Microsoft Knowledge Base:
961451Oprava: Obdržíte nesprávná hodnota při dotazování hodnoty vložili poslední identity po vložení dat do tabulky obsahující sloupec identity v aplikaci, která používá datových objektů ActiveX pomocí kurzor na straně klienta
Poznámka: Opravu hotfix popsanou v části "Řešení" v dřívější verzi tohoto článku je nahrazen opravu hotfix popsanou v 961451.

Prohlášení

Společnost Microsoft potvrzuje, že se jedná o problém v produktech této společnosti, které jsou uvedeny v části Informace v tomto článku jsou určeny pro produkt.

Další informace

Funkce SCOPE_IDENTITY a @@ IDENTITY proměnné vrátit poslední hodnoty identity, které jsou generovány v libovolné tabulce v aktuální relaci. Funkce SCOPE_IDENTITY však vrátí hodnoty, které jsou vloženy pouze v rámci aktuálního oboru. @@ IDENTITY proměnné omezit kurzor konkrétním oboru.

Předpokládejme například, že databáze obsahuje Tabulka1 a Tabulka2. Obě tabulky mají sloupce identity. Aktivační proceduru vložení je definována v Tabulka1. Po vložení řádku v Tabulka1 aktivační událost vloží kopii řádku tabulka2. Tento scénář zahrnuje následující dvě obory:
  • Vložení Tabulka1
  • Vložení v tabulka2 podle aktivační události
V tomto scénáři @@ IDENTITY proměnné a funkce SCOPE_IDENTITY vrátí různé hodnoty, když řádek je vložena v Tabulka1. @@ IDENTITY proměnné vrátí poslední hodnotu sloupce identity, která je vložena přes všechny obory v aktuální relaci. V tomto případě @@ IDENTITY proměnné vrátí hodnotu identity je vložen tabulka2. Funkce SCOPE_IDENTITY však vrátí hodnotu identity je vložen Tabulka1, protože funkce SCOPE_IDENTITY vrátí hodnotu posledního vložen do stejného oboru. Pokud je vyvolána funkce před libovolné příkazy INSERT provedených sloupec identity dojít v oboru, vrátí funkce SCOPE_IDENTITY hodnotu NULL.

Další informace o terminologii používané v aktualizacích softwaru naleznete v následujícím článku znalostní báze Microsoft Knowledge Base:
824684Popis standardní terminologie používané při popisu aktualizací softwaru společnosti Microsoft

Vlastnosti

ID článku: 940569 - Poslední aktualizace: 25. srpna 2009 - Revize: 2.0
Informace v tomto článku jsou určeny pro produkt:
  • 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
Klíčová slova: 
kbmt kbautohotfix kbwinxppresp3fix kbexpertiseinter kbwinserv2003postsp2fix kbbug kbfix kbhotfixserver kbqfe KB940569 KbMtcs
Strojově přeložený článek
Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum.
Projděte si také anglickou verzi článku:940569

Dejte nám zpětnou vazbu

 

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