sql >> Databasteknik >  >> RDS >> Sqlserver

Vad skulle orsaka att parametern sniffar en dator och inte en annan?

Om du antar att du menar att båda datorerna ansluter till samma server så var det förmodligen en inställningsskillnad som gjorde att den olämpliga planen inte delades mellan de två anslutningarna.

För att en anslutning ska kunna återanvända en tidigare cachad plan måste en hel del inställningar (plancache-nycklar) vara desamma inklusive ANSI_NULLS , ARITHABORT , Language , DATEFIRST och standardschema (om frågan bygger på någon implicit namnupplösning).

Du kan se dessa genom att titta på sys.dm_exec_plan_attributes (de där is_cache_key=1 måste vara samma mellan anslutningar).

En fullständig lista över de attribut där is_cache_key=1 är

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 och cursor_options är bitflaggor som omfattar en mängd olika alternativ som dokumenteras här . I mitt experiment user_id hänvisar faktiskt till schema_id(default_schema_name) istället för principal_id .




  1. SQL Server TRIM-, LTRIM- och RTRIM-funktioner

  2. SQL Server Latches och deras indikation på prestandaproblem

  3. Orsakas av:java.lang.ClassNotFoundException:oracle.jdbc.OracleDriver

  4. fråga för min första rad admin för aldrig radera