Przy użyciu wiązania sesje
Sesje związanego ułatwiają koordynacji działań na wiele sesji na tym samym serwerze.Sesje związanego zezwolić na współużytkowanie tej samej transakcji i blokowaniem dwóch lub większej liczby sesji i pracować na tych samych danych bez konflikty blokada.Sesje związany można utworzyć z wielu sesji w obrębie tej samej aplikacji lub z wielu aplikacji za pomocą oddzielnych sesji.
Aby uczestniczyć w sesja związane, wywołuje sesja sp_getbindtoken or srv_getbindtoken (za pomocą Otwórz usług danych) uzyskać tokenów powiązania.Token powiązania jest ciąg znaków, który unikatowo identyfikuje każdego powiązania transakcji.Token powiązania jest następnie wysyłany do innych sesja związany z bieżącą sesja.Inne sesje powiązania transakcji poprzez wywołanie sp_bindsession, przy użyciu tokenu wiązania otrzymanych od pierwszej sesja.
Uwaga
Sesja musi mieć transakcję aktywnego użytkownika w celu sp_getbindtoken or 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 pierwszej sesja wiąże ich sesja.Brak nie Transact-SQL instrukcja lub funkcja interfejsu API, można użyć aplikacji, aby uzyskać tokenów powiązania dla transakcji, uruchomiona przez inny proces. Metody, które mogą być używane do przesyłania token powiązania między innymi następujące:
Jeśli wszystkie sesje inicjowane z tego samego procesu aplikacji, tokeny powiązania mogą być przechowywane w globalnej pamięci lub jako parametr przekazano do funkcji.
Jeżeli w sesjach z innej aplikacji procesów, mogą zostać przesłane tokeny powiązania komunikacja międzyprocesowa (IPC), takie jak zdalne wywołanie procedury (RPC, Remote Procedure Call) lub dynamicznej wymiany danych (DDE).
Tokeny powiązania mogą być przechowywane w tabela w wystąpieniu SQL Server Database Engine które mogą być odczytywane przez procesy, którzy chcą mieć możliwość powiązania pierwszej sesja.
Tylko jedną sesję zestaw związanym sesji może być aktywna w dowolnym czas.Jest wykonywanie instrukcja w wystąpieniu jednej sesji ma wyniki w oczekiwaniu na wystąpienie lub, nie związany z innych sesji może uzyskać dostęp do wystąpienia aż do chwili, kiedy bieżąca sesja kończy przetwarzanie lub anuluje bieżącej instrukcja.Jeśli wystąpienie jest zajęte przetwarzaniem instrukcja od innych sesja związane, wystąpi błąd wskazujący czy miejsca transakcji jest używana i sesja, należy ponownie później.
Gdy powiąże sesje każdej sesja zachowuje jego ustawienie poziom izolacji.Aby zmienić ustawienia trybu izolacji jednej sesja za pomocą zestaw poziom izolacji TRANSACTION nie ma wpływu na ustawienia innych sesja związane.
Typy wiązania sesje
Dwa rodzaje sesji związane są lokalne i rozproszonych.
Powiązania sesja lokalnej
Umożliwia związanego sesji udostępnić miejsce transakcji jednej transakcji w jedno wystąpienie Database Engine.
Rozproszone związanego sesja
Pozwala na udostępnianie tej samej transakcji w dwóch lub więcej wystąpień, aż do chwili, kiedy cała transakcja przekazana lub wycofana przy użyciu sesji związane Microsoft Koordynator transakcja rozproszona (MS DTC).
Rozproszone sesje związanego nie są identyfikowane za pomocą tokenu powiązanie ciąg znaków, są one identyfikowane przez numery identyfikacyjne transakcja rozproszona.Powiązania sesja uczestniczy w transakcji lokalnej, wykonuje RPC na serwerze zdalnym z zestaw ON REMOTE_PROC_TRANSACTIONS transakcji lokalnej związanego automatycznie zostanie podwyższony do powiązania transakcji rozproszonej przez usługę MS DTC i sesja programu MS DTC jest uruchomiona.
Kiedy należy używać wiązania sesje
We wcześniejszych wersjach SQL Server, sesje związanego były używane głównie przy opracowywaniu rozszerzonych procedur przechowywanych, które muszą być wykonać Transact-SQL instrukcje dla procesu, który je wywołuje. Proces wywołujący przekazywania tokenu wiązania, jak procedura pozwala na jeden parametr rozszerzona procedura składowana o łączyć miejsca transakcji wywołującego procesu w ten sposób integrowania rozszerzone przechowywane procedury z procesu wywołującego.
W SQL Server Database Engine, procedury przechowywane, napisane przy użyciu środowiska CLR są bardziej bezpieczne, skalowalne i stabilne niż rozszerzonych procedur przechowywanych. Za pomocą procedur przechowywanych CLR SqlContext obiekt przyłączyć kontekście wywołującego sesja, sp_bindsession.
Sesje związanego może służyć do opracowywania aplikacji trójwarstwowa, w których firmy logika jest włączona do oddzielnych programów, które działają cooperatively transakcji pojedynczej firmy.Te programy muszą być kodowane dokładnie koordynowanie ich dostęp do bazy danych.Dwie sesje współużytkują te same blokad, dwa programy nie musi próbować modyfikować te same dane w tym samym czas.W dowolnym punkcie w czasie tylko jedną sesja może być wykonanie pracy w ramach transakcji; może być nie wykonywanie równoległe.Transakcji może być włączane tylko między sesjami przy wyraźnie określonej wydajności pobrania punktów, na przykład gdy zostały wykonane wszystkie instrukcje DML i wyniki ich zastosowania.