Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Какво би причинило параметър да надуши един компютър, а не друг?

Ако приемем, че имате предвид, че и двете машини са се свързвали към един и същ сървър, тогава вероятно е имало разлика в настройките, която е причинила неподходящия план да не бъде споделен между двете връзки.

За да може връзката да използва повторно предварително кеширан план, доста настройки (ключове за кеш на план) трябва да бъдат еднакви, включително ANSI_NULLS , ARITHABORT , Language , DATEFIRST и схема по подразбиране (ако заявката разчита на имплицитно разрешаване на имена).

Можете да ги видите, като погледнете sys.dm_exec_plan_attributes (тези, където is_cache_key=1 трябва да са еднакви между връзките).

Пълен списък на атрибутите, където is_cache_key=1 е

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 и cursor_options са битови флагове, включващи различни опции както е документирано тук . В моя експеримент user_id всъщност се отнася до schema_id(default_schema_name) вместо principal_id .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Какво представляват ограниченията на базата данни?

  2. Най-добрият начин за улавяне на нарушения на уникалните ограничения на sql в C# по време на вмъквания

  3. Разделете една колона на няколко реда

  4. Прозрачно криптиране на данни (TDE) в SQL Server в група за наличност на AlwaysOn в пример

  5. Надстроих ODBC драйвера на SQL Server и производителността беше отрицателно засегната. Какво мога да направя?