Udostępnij za pośrednictwem


Aktualizowanie danych w SQL Server kursory

Podczas pobierania i aktualizowania danych poprzez SQL Server kursory, SQL Server macierzystego klient OLE DB dostawca konsumenta aplikacji jest związana w zagadnienia i ograniczenia, które stosuje się do wszelkich innych klient aplikacji.

Tylko wiersze w SQL Server kursory uczestniczyć w kontroli równoczesnych dostępu do danych.Gdy konsument żąda zestawu zestaw wierszy można modyfikować współbieżność formantu jest kontrolowana przez DBPROP_LOCKMODE.Aby zmodyfikować poziom kontroli równoczesny dostęp, konsument ustawia właściwość DBPROP_LOCKMODE przed otwarciem zestawu zestaw wierszy.

Poziomów izolacji transakcji może spowodować znaczne odchyłki pozycjonowania wiersza, jeśli projekt aplikacji klient umożliwia transakcje pozostają otwarte przez długie okresy czas.Domyślnie SQL Server macierzystego klienta dostawca OLE DB używa popełnione odczytu poziom izolacji określonych przez DBPROPVAL_TI_READCOMMITTED. SQL Server Macierzystego klienta OLE DB dostawca obsługuje odczyt zanieczyszczony izolacji po współbieżność zestaw wierszy jest tylko do odczytu.Dlatego konsument może żądać wyższy poziom izolacji w modyfikowalnych zestawu zestaw wierszy, ale nie można żądać wszelkich niższego poziomu pomyślnie.

Natychmiastowe i opóźnione tryby aktualizacji

W trybie natychmiastową aktualizację każde wywołanie IRowsetChange::SetData powoduje, że podróż do SQL Server.Jeśli konsument wiele zmian do pojedynczego wiersza, jest bardziej efektywne, aby przesłać wszystkie zmiany w jednym SetData wywołania.

W trybie aktualizacji opóźnione dokonać roundtrip SQL Server dla każdego wiersza wskazanych w cRows i rghRows parametry IRowsetUpdate::Update.

W obu trybach roundtrip reprezentuje różne transakcji obiekt transakcji nie jest otwarty dla zestawu zestaw wierszy.

Kiedy używasz IRowsetUpdate::Update, SQL Server macierzystego klienta dostawca OLE DB próbuje przetworzyć każdego wskazanego wiersza.Błąd występuje z powodu nieprawidłowych wartości danych, długość lub stanu dla każdego wiersza nie zatrzymuje SQL Server macierzystego klienta OLE DB dostawca przetwarzania.Wszystkie albo brak innych wierszy uczestniczących w aktualizacji może być zmodyfikowany.Konsument musi zbadać zwracane prgRowStatus tablicy do określenia awarii dla wszelkich specjalnych wierszy, gdy SQL Server macierzystego klienta dostawca OLE DB zwraca DB_S_ERRORSOCCURRED.

Konsument nie należy zakładać, że wiersze są przetwarzane w określonej kolejności.Jeśli konsument wymaga przetwarzania zamówione modyfikacji danych przez więcej niż jednego wiersza, konsumenta należy ustalenie kolejności w logiki aplikacji i otwartej transakcji należy ująć procesu.