Przy użyciu sesji związane
Sesje związanego ułatwienia koordynacji działań między wiele sesji na tym serwerze.Sesje związanego zezwolić na współużytkowanie tej samej transakcji i blokad dwóch lub większej liczby sesji i pracować na tych samych danych bez konfliktów blokada.Sesje związany można utworzyć z wielu sesji w obrębie tej samej aplikacji lub z wielu aplikacji z oddzielnych sesji.
Aby uczestniczyć w sesja związanego, wywołuje sesja sp_getbindtoken lub srv_getbindtoken (za pomocą otwartych usług danych) uzyskanie tokenu powiązania.Bind token jest znak ciąg jednoznacznie identyfikuje każdego powiązania transakcji.Bind token jest następnie wysyłane do innych sesja powiązana z bieżącej sesja.Inne sesje powiązać transakcję wywołując sp_bindsession, przy użyciu tokenu bind otrzymanych od pierwszej sesja.
Ostrzeżenie
Sesja musi mieć transakcja aktywnego użytkownika w celu sp_getbindtoken lub srv_getbindtoken powiodła się.
Tokeny BIND muszą być przekazywane z kodu aplikacji, dzięki któremu pierwszej sesja do kodu aplikacji, która następnie wiąże ich sesja pierwszej sesja.Nie ma żadnych Transact-SQL instrukcja lub funkcja API, aplikacji można uzyskać powiązanie tokenu dla transakcji uruchomiona przez inny proces.Metody, które mogą być używane do transmisji token powiązania między innymi następujące:
Jeśli wszystkie sesje inicjowane z tego samego procesu aplikacji tokeny bind można przechowywane w globalnej pamięci lub jako parametr przekazano do funkcji.
Jeśli sesje są wykonane z procesów aplikacji w oddzielnym, mogą zostać przesłane tokeny bind komunikacja międzyprocesowa (IPC), takie jak zdalne wywołanie procedury (RPC) lub dynamicznej wymiany danych (DDE).
Tokeny powiązania mogą być przechowywane w tabela w wystąpienie z Aparat baz danych programu SQL Server , mogą być odczytywane przez procesy, które chcą powiązać pierwszej sesja.
Tylko jedną sesja w zestawie związanego sesja może być aktywne w dowolnym czas.Jeśli jedna sesja jest wykonywania instrukcja na wystąpienie lub wyniki do czasu wystąpienia, żadna powiązana sesja może uzyskać dostęp wystąpienie dopóki bieżąca sesja kończy przetwarzanie lub anuluje aktualne oświadczenie.Jeśli wystąpienie jest zajęte przetwarzaniem instrukcja od innej sesja związanego, wystąpi błąd wskazujący, że miejsce transakcji jest używany i sesja, należy ponownie później.
Gdy powiąże sesje każdej sesja zachowuje jego poziom izolacji ustawienie.Aby zmienić ustawienie poziomu izolacji w jednej sesja za pomocą USTAWIĆ poziom izolacji transakcji nie wpływa na ustawienia innych sesja związane.
Typy sesji związane
Dwa typy sesji związane są lokalne i rozproszonych.
Związanego sesja lokalnej
Umożliwia związanego sesje udostępnić miejsce transakcji pojedynczej transakcji w jedno wystąpienie Aparat baz danych.
Rozproszone związanego sesja
Umożliwia związanego sesje współużytkowane przez dwa lub więcej wystąpień tej samej transakcji, aż cała transakcja zostanie przekazana lub wycofana przy użyciu Microsoft Distributed Transaction Coordinator (MS DTC).
Rozproszonych sesje związanego nie są identyfikowane za pomocą tokenu bind ciąg znaków; są one identyfikowane przez numery identyfikacyjne transakcja rozproszona.Związanego sesja uczestniczy w transakcji lokalnej, wykonuje RPC na serwerze zdalnym z USTAWIONA na REMOTE_PROC_TRANSACTIONS transakcji lokalnej związanego automatycznie podwyższony transakcji rozproszonej związanego przez usługi MS DTC i rozpoczęcia sesja usługi MS DTC.
Kiedy używać powiązane sesje
W starszych wersjach SQL Server, sesje związane były stosowane przede wszystkim w rozwijaniu rozszerzonych procedur przechowywanych, które należy wykonać Transact-SQL oświadczeń w imieniu procesu, który je wywołuje.Posiadające proces wywołujący przebiegu w tokenie bind, jak pozwala na jeden parametr rozszerzona procedura składowana procedura łączyć miejsca transakcji procesu wywołującego, a tym samym integracji rozszerzone przechowywane procedury z procesu wywołującego.
W Aparat baz danych programu SQL Server, procedury przechowywane, napisane przy użyciu środowiska CLR są bardziej bezpieczne, skalowalne i stabilniejsze niż rozszerzonych procedur przechowywanych.Użyj procedury przechowywane CLR SqlContext obiektu, aby łączyć kontekstu wywołania sesja nie sp_bindsession.
Sesje związane służą do opracowywania aplikacji trzeciej warstwy, w których logika biznesowa jest włączona do oddzielnych programów, które działają w pobudzenia transakcji biznesowej.Programy te muszą kodowane starannie koordynować ich dostęp do bazy danych.Ponieważ dwie sesje używają tej samej blokad, dwa programy nie należy próbować modyfikować te same dane w tym samym czas.W dowolnym punkcie w czas, tylko do jednej sesja można wykonanie pracy w ramach transakcji; może być nie wykonywanie równoległe.Transakcja tylko mogą być przełączane między sesjami punktach dobrze plonu, gdy wszystkie DML ukończył instrukcji oraz ich wyniki zostały pobrane.