Udostępnij przez


Informacje o kontrolce współbieżności

pobierz sterownik JDBC

Kontrolka współbieżności odnosi się do różnych technik, które są używane do zachowania integralności bazy danych, gdy wielu użytkowników aktualizuje wiersze w tym samym czasie. Nieprawidłowa współbieżność może prowadzić do problemów, takich jak brudne odczyty, ułudne odczyty i niepowtarzalne odczyty. Sterownik JDBC firmy Microsoft dla programu SQL Server udostępnia interfejsy dla wszystkich technik współbieżności używanych przez program SQL Server w celu rozwiązania tych problemów.

Uwaga / Notatka

Aby uzyskać więcej informacji na temat współbieżności w SQL Server, zobacz "Zarządzanie równoczesnym dostępem do danych".

Uwagi

Sterownik JDBC obsługuje następujące typy współbieżności:

Typ współbieżności Charakterystyka Blokady wierszy Description
TYLKO_DO_ODCZYTU Tylko do odczytu Nie. Aktualizacje za pośrednictwem kursora nie są dozwolone, a żadne blokady nie są przechowywane w wierszach tworzących zestaw wyników.
CONCUR_UPDATABLE Optymistyczne operacje odczytu i zapisu Nie. Baza danych zakłada, że rywalizacja o wiersz jest mało prawdopodobna, ale możliwa. Integralność wierszy jest sprawdzana przy użyciu porównania znacznika czasu.
CONCUR_SS_SCROLL_LOCKS Pesymistyczny odczyt i zapis Tak Baza danych zakłada, że blokada na poziomie wiersza jest prawdopodobna. Integralność wierszy jest zapewniana przy użyciu blokowania wierszy.
CONCUR_SS_OPTIMISTIC_CC Optymistyczny odczyt i zapis Nie. Baza danych zakłada, że rywalizacja o wiersz jest mało prawdopodobna, ale możliwa. Integralność wierszy jest weryfikowana za pomocą porównania znacznika czasu.

W przypadku programu SQL Server 2005 (9.x) i nowszych serwer zmieni to na CONCUR_SS_OPTIMISTIC_CCVAL, jeśli tabela nie zawiera kolumny sygnatury czasowej.

W przypadku programu SQL Server 2000 (8.x), jeśli w tabeli bazowej znajduje się kolumna typu timestamp, używany jest tryb OPTIMISTIC WITH ROW VERSIONING, nawet jeśli określono tryb OPTIMISTIC WITH VALUES. Jeśli określono OPTYMISTYCZNE PRZECHOWYWANIE WERSJI WIERSZY, a tabela nie ma sygnatur czasowych, zostanie użyta wartość OPTYMISTYCZNA Z WARTOŚCIAMI.
CONCUR_SS_OPTIMISTIC_CCVAL Optymistyczne odczyty i zapisy Nie. Baza danych zakłada, że rywalizacja o wiersz jest mało prawdopodobna, ale możliwa. Integralność wierszy jest sprawdzana przy użyciu porównania danych wierszy.

Zestawy wyników, które nie można zaktualizować

Zestaw wyników z możliwością aktualizowania to zestaw wyników, w którym można wstawiać, aktualizować i usuwać wiersze. W następujących przypadkach program SQL Server nie może utworzyć aktualizowalnego kursora. Wygenerowany wyjątek to "Zestaw wyników nie jest aktualizowalny".

Przyczyna Description Remedium
Instrukcja nie jest tworzona zgodnie ze składnią JDBC 2.0 (lub nowszej) JDBC 2.0 wprowadziło nowe metody tworzenia instrukcji SQL. Jeśli jest używana składnia JDBC 1.0, zestaw wyników jest domyślnie ustawiony na tylko do odczytu. Określ typ zestawu wyników i współbieżność podczas tworzenia instrukcji.
Zapytanie jest tworzone przy użyciu TYPE_SCROLL_INSENSITIVE Serwer SQL tworzy statyczny kursor typu migawka. Jest to odłączone od bazowych wierszy tabeli, aby chronić kursor przed aktualizacjami wierszy przez innych użytkowników. Użyj TYPE_SCROLL_SENSITIVE, TYPE_SS_SCROLL_KEYSET, TYPE_SS_SCROLL_DYNAMIC lub TYPE_FORWARD_ONLY z CONCUR_UPDATABLE, aby uniknąć tworzenia kursora statycznego.
Projekt tabeli uniemożliwia użycie kursora KEYSET lub DYNAMICZNEgo Tabela bazowa nie ma unikatowych kluczy, aby umożliwić programowi SQL Server unikatowe zidentyfikowanie wiersza. Dodaj unikatowe klucze do tabeli, aby zapewnić unikatową identyfikację każdego wiersza.

Zobacz także

Zarządzanie zestawami wyników za pomocą sterownika JDBC