Sdílet prostřednictvím


Principy řízení souběžnosti

Stáhnout ovladač JDBC

Řízení souběžnosti odkazuje na různé techniky, které se používají k zachování integrity databáze, když více uživatelů současně aktualizuje řádky. Nesprávná souběžnost může vést k problémům, jako jsou špinavá čtení, fantomové čtení a neopakovatelné čtení. Ovladač Microsoft JDBC pro SQL Server poskytuje rozhraní pro všechny techniky souběžnosti používané SQL Serverem k řešení těchto problémů.

Poznámka:

Další informace o souběžnosti SQL Serveru najdete v tématu Správa souběžného přístupu k datům.

Poznámky

Ovladač JDBC podporuje následující typy souběžnosti:

Typ souběžnosti Charakteristiky Zámky řádků Description
CONCUR_READ_ONLY Jen pro čtení Ne Aktualizace pomocí kurzoru nejsou povoleny a na řádcích, které tvoří sadu výsledků, se neuchovávají žádné zámky.
CONCUR_UPDATABLE Optimistický zápis a čtení Ne Databáze předpokládá, že kolize řádků je nepravděpodobné, ale je to možné. Je kontrolována integrita řádků s porovnáním časového razítka.
CONCUR_SS_SCROLL_LOCKS Pesimistické čtení a zápis Ano Databáze předpokládá, že kolize řádků je pravděpodobné. Integrita řádků je zajištěna uzamčením řádků.
CONCUR_SS_OPTIMISTIC_CC Optimistická operace čtení/zápisu Ne Databáze předpokládá, že kolize řádků je nepravděpodobné, ale je to možné. Integrita řádků je ověřena porovnáním časového razítka.

Pro SQL Server 2005 (9.x) a novější verze serveru změní tuto možnost na CONCUR_SS_OPTIMISTIC_CCVAL, pokud tabulka neobsahuje sloupec typu timestamp.

Pro SQL Server 2000 (8.x), pokud je v podkladové tabulce sloupec časového razítka, použije se OPTIMISTICKÁ ŘÍZENÍ VERZÍ ŘÁDKŮ, i v případě, že je zadána volba OPTIMISTIC WITH VALUES. Pokud je zadána funkce OPTIMISTIC WITH ROW VERSIONING a tabulka neobsahuje časová razítka, použije se OPTIMISTIC WITH VALUES.
CONCUR_SS_OPTIMISTIC_CCVAL Optimistický přístup pro zápis a čtení Ne Databáze předpokládá, že kolize řádků je nepravděpodobné, ale je to možné. Kontrola integrity řádků je prováděna porovnáním dat řádků.

Sady výsledků, které nelze aktualizovat

Aktualizovatelná sada výsledků je sada výsledků, do které lze vkládat, aktualizovat a odstraňovat řádky. V následujících případech nemůže SQL Server vytvořit aktualizovatelný kurzor. Vygenerovaná výjimka: Sada výsledků není aktualizovatelná.

Příčina Description Lék
Příkaz není vytvořen pomocí syntaxe JDBC 2.0 (nebo novější). JDBC 2.0 zavedl nové metody pro vytváření příkazů. Pokud se použije syntaxe JDBC 1.0, nastaví se ve výchozím nastavení sada výsledků jen pro čtení. Při vytváření příkazu zadejte typ sady výsledků a souběžnost.
Příkaz se vytvoří pomocí TYPE_SCROLL_INSENSITIVE SQL Server vytvoří statický kurzor snímku. Tím se odpojí od řádků podkladové tabulky, aby se kurzor chránil před aktualizacemi řádků jinými uživateli. Pokud chcete zabránit vytváření statického kurzoru, použijte TYPE_SCROLL_SENSITIVE, TYPE_SS_SCROLL_KEYSET, TYPE_SS_SCROLL_DYNAMIC nebo TYPE_FORWARD_ONLY s CONCUR_UPDATABLE.
Návrh tabulky vylučuje KEYSET nebo DYNAMIC kurzor. Podkladová tabulka neobsahuje jedinečné klíče, které sql Serveru umožňují jedinečně identifikovat řádek. Přidáním jedinečných klíčů do tabulky zajistíte jedinečnou identifikaci každého řádku.

Viz také

Správa sad výsledků pomocí ovladače JDBC