En supposant que vous vouliez dire que les deux machines se connectaient au même serveur, il y avait probablement une différence de réglage qui empêchait le plan inapproprié d'être partagé entre les deux connexions.
Pour qu'une connexion puisse réutiliser un plan précédemment mis en cache, plusieurs paramètres (clés de cache de plan) doivent être identiques, y compris ANSI_NULLS
, ARITHABORT
, Language
, DATEFIRST
et le schéma par défaut (si la requête repose sur une résolution de nom implicite).
Vous pouvez les afficher en consultant sys.dm_exec_plan_attributes
(ceux où is_cache_key=1
doivent être les mêmes entre les connexions).
Une liste complète des attributs où is_cache_key=1
est
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
et cursor_options
sont des drapeaux binaires comprenant une variété d'options comme documenté ici
. Dans mon expérimentation user_id
fait en fait référence à schema_id(default_schema_name)
plutôt que principal_id
.