Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Ří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. |