sql >> Base de Datos >  >> RDS >> Sqlserver

¿Qué causaría el rastreo de parámetros en una computadora y no en otra?

Suponiendo que quiere decir que ambas máquinas se estaban conectando al mismo servidor, entonces probablemente hubo una diferencia de configuración que provocó que el plan inadecuado no se compartiera entre las dos conexiones.

Para que una conexión reutilice un plan previamente almacenado en caché, algunas configuraciones (claves de caché del plan) deben ser las mismas, incluido ANSI_NULLS , ARITHABORT , Language , DATEFIRST y el esquema predeterminado (si la consulta se basa en una resolución de nombre implícita).

Puede verlos consultando sys.dm_exec_plan_attributes (los que tienen is_cache_key=1 debe ser el mismo entre las conexiones).

Una lista completa de los atributos donde is_cache_key=1 es

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 y cursor_options son indicadores de bits que comprenden una variedad de opciones como se documenta aquí . En mi experimentación user_id en realidad se refiere a schema_id(default_schema_name) en lugar de principal_id .