Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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. |