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

DMF sys.dm_exec_sql_text не показва DBID

1) Това поведение е налично в SQL2005 -> SQL2008R2.

2) Защо sys.dm_exec_sql_text.dbid има (понякога) NULL?

  • В рамките на SQL2005 -> SQL2008R2 dbid е NULL „за ad hoc и подготвени SQL изрази“ (вижте MSDN за SQL Server 2008 R2 ).
  • В рамките на SQL 2012 „За ad hoc и подготвени SQL изрази, идентификаторът на базата данни, където са компилирани изразите“ (вижте MSDN ). И така, започвайки от SQL2012 dbid ще върне различна от NULL стойност, включително "ad hoc и подготвени SQL изрази".

3) За да разреша този проблем в SQL2008 -> SQL2008R2 използвах sys.dm_exec_plan_attributes (вижте MSDN )

SELECT ..., ISNULL(s2.dbid,CONVERT(SMALLINT,att.value)) AS my_dbid, ...
FROM sys.dm_exec_query_stats AS s1 
CROSS APPLY sys.dm_exec_sql_text(sql_handle) AS s2 
CROSS APPLY sys.dm_exec_plan_attributes(s1.plan_handle) att
WHERE att.attribute='dbid


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да инсталирате SQL Server на Linux

  2. Типовете данни text и varchar са несъвместими в оператора equal to

  3. Използването на OPENQUERY (съхранена процедура exec) за създаване на нова временна таблица е неуспешно с грешка 11526

  4. Извличане на последния вмъкнат идентификатор с помощта на scope_Identity()

  5. Автоматизирани архиви на SQL Server