Таблицы в памяти и обычные таблицы для процедур, хранящихся в SQL Server - PullRequest
0 голосов
/ 16 ноября 2018

Я пытаюсь переписать хранимую процедуру в изначально скомпилированную хранимую процедуру. Процедура относится к 4 таблицам; эти таблицы являются обычными (не оптимизированными для памяти), и я использую 2 представления, связанные с ними.

Можно ли создать встроенную скомпилированную хранимую процедуру без преобразования какого-либо из этих объектов в оптимизированные для памяти таблицы?

1 Ответ

0 голосов
/ 16 ноября 2018

Нет, встроенные хранимые процедуры не могут ссылаться на дисковые таблицы, только на оптимизированные для памяти. Вот цитата из книги Калена Делани Внутренние компоненты SQL Server: OLTP в памяти :

Однако существуют ограничения на языковые конструкции T-SQL, которые разрешены внутри встроенной хранимой процедуры по сравнению с расширенным набором функций, доступным в интерпретируемом коде. Кроме того, встроенные хранимые процедуры могут обращаться только к оптимизированным для памяти таблицам и не могут ссылаться на таблицы на основе дисков.

Я не смог найти четкого утверждения в официальных документах Microsoft для этого, за исключением этого ограничения, которое является прямым следствием того факта, что встроенные хранимые процедуры не могут ссылаться на "нормальные" таблицы:

Для таблиц с оптимизированной памятью ограничения FOREIGN KEY поддерживаются только для внешних ключей, ссылающихся на первичные ключи других таблиц с оптимизированной памятью .

...