Ervan uitgaande dat u bedoelt dat beide machines verbinding maakten met dezelfde server, was er waarschijnlijk een instellingsverschil waardoor het ongepaste plan niet werd gedeeld tussen de twee verbindingen.
Om ervoor te zorgen dat een verbinding een eerder in de cache opgeslagen plan opnieuw kan gebruiken, moeten nogal wat instellingen (cachesleutels van het plan) hetzelfde zijn, waaronder ANSI_NULLS
, ARITHABORT
, Language
, DATEFIRST
en standaardschema (als de query afhankelijk is van een impliciete naamomzetting).
U kunt deze bekijken door te kijken naar sys.dm_exec_plan_attributes
(degene waar is_cache_key=1
moeten hetzelfde zijn tussen verbindingen).
Een volledige lijst van de attributen waar is_cache_key=1
is
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
en cursor_options
zijn bitvlaggen met een verscheidenheid aan opties zoals hier gedocumenteerd
. In mijn experiment user_id
verwijst eigenlijk naar schema_id(default_schema_name)
in plaats van principal_id
.