| Termin | Definicja |
|---|---|
| Spis funkcji ograniczonych w OLTP | Spis funkcji ograniczonych w OLTP In-Memory obejmuje m.in. część konstrukcji T-SQL niedostępnych dla tabel pamięciowych. Zakres pojęcia OLTP In-Memory w SQL ServerSpis funkcji ograniczonych w OLTP In-Memory dotyczy mechanizmu In-Memory OLTP w Microsoft SQL Server, a więc pamięciowych tabel, pamięciowych typów tabel oraz modułów T-SQL kompilowanych natywnie. Nie jest to ogólna lista wszystkich poleceń niedostępnych w języku T-SQL. Ograniczenie może odnosić się do konkretnego rodzaju obiektu, sposobu dostępu do tabeli albo całej bazy danych zawierającej grupę plików Pamięciowa tabela może być używana z interpretowanym T-SQL, podobnie jak zwykła tabela dyskowa, ale nie wszystkie konstrukcje pozostają wtedy dostępne. Osobny, zwykle węższy zakres języka obowiązuje w procedurach składowanych utworzonych z opcją Konstrukcje T-SQL niedostępne przy tabelach pamięciowychPrzy dostępie do tabel pamięciowych z interpretowanego T-SQL nie są obsługiwane między innymi operacje Nie można również wykonywać zapytań między bazami danych, jeżeli to samo zapytanie korzysta z tabeli pamięciowej. Z podobnego powodu transakcja obejmująca obiekt In-Memory OLTP nie może w typowym scenariuszu odwoływać się do tabel użytkownika w innej bazie. Niedostępne jest też używanie serwera połączonego w tym samym zapytaniu lub transakcji co tabela pamięciowa. Szczególnej uwagi wymagają kursory dynamiczne i keyset: dla zapytań korzystających z tabel pamięciowych nie zachowują pełnej pierwotnej semantyki i są degradowane do kursorów statycznych tylko do odczytu. Węższy język procedur natywnie kompilowanychProcedura natywnie kompilowana jest tłumaczona do kodu wykonywanego bez standardowej interpretacji T-SQL. Zapewnia to inny model wykonania, ale wymaga ograniczenia składni. Procedura tego typu może uzyskiwać dostęp wyłącznie do tabel pamięciowych; nie może bezpośrednio korzystać z tabel dyskowych. W natywnych modułach nie są dostępne między innymi wyrażenia CTE, czyli konstrukcje Ograniczenia dotyczą także planu zapytania. W procedurach natywnie kompilowanych nie występuje przetwarzanie równoległe, a operatory łączenia hash join i merge join nie mogą być elementem planu; stosowane są złączenia nested loop. Z tego względu procedury natywne są przeznaczone przede wszystkim do krótkich, powtarzalnych operacji transakcyjnych, a nie do rozbudowanych zapytań raportowych. Funkcje okna, w tym konstrukcje wykorzystujące Wpływ ograniczeń na projekt i diagnostykęPrzed migracją tabeli do In-Memory OLTP należy sprawdzić wszystkie zapytania, procedury, wyzwalacze i funkcje korzystające z danego obiektu. Samo utworzenie tabeli pamięciowej nie oznacza, że każda powiązana część aplikacji może zostać automatycznie skompilowana natywnie. Często właściwym rozwiązaniem jest pozostawienie warstwy raportowej i administracyjnej w interpretowanym T-SQL oraz przeniesienie do modułu natywnego tylko krótkiej ścieżki krytycznej dla obsługi transakcji. Kontroli wymagają również funkcje na poziomie bazy danych. W bazie z grupą plików W praktyce diagnoza błędu powinna obejmować wersję SQL Server, definicję obiektu, rodzaj modułu T-SQL oraz pełny komunikat silnika. Należy odróżnić błąd składni w procedurze natywnie kompilowanej od zakazu operacji na poziomie bazy. Dopiero takie rozróżnienie pozwala dobrać obejście: zmianę konstrukcji zapytania, rozdzielenie operacji między moduły, użycie zwykłej tabeli pomocniczej albo rezygnację z konkretnej funkcji In-Memory OLTP. |