Zakładając, że masz na myśli, że obie maszyny łączyły się z tym samym serwerem, prawdopodobnie istniała różnica w ustawieniach, która spowodowała, że nieodpowiedni plan nie został udostępniony między dwoma połączeniami.
Aby połączenie mogło ponownie wykorzystać wcześniej zbuforowany plan, kilka ustawień (klucze pamięci podręcznej planu) musi być takich samych, w tym ANSI_NULLS , ARITHABORT , Language , DATEFIRST i domyślny schemat (jeśli zapytanie opiera się na niejawnym rozpoznawaniu nazw).
Możesz je zobaczyć, patrząc na sys.dm_exec_plan_attributes (te, w których is_cache_key=1 muszą być takie same między połączeniami).
Pełna lista atrybutów, w których is_cache_key=1 jest
dbid_execute
required_cursor_options
compat_level
parent_plan_handle
date_format
language_id
status
merge_action_type
is_replication_specific
objectid
acceptable_cursor_options
date_first
set_options
user_id
dbid
optional_spid
optional_clr_trigger_objid
optional_clr_trigger_dbid
set_options i cursor_options to flagi bitowe zawierające różne opcje jak udokumentowano tutaj
. W moim eksperymencie user_id faktycznie odnosi się do schema_id(default_schema_name) zamiast principal_id .