sql >> Database >  >> RDS >> Sqlserver

DMF sys.dm_exec_sql_text toont geen DBID

1) Dit gedrag is beschikbaar in SQL2005 -> SQL2008R2.

2) Waarom sys.dm_exec_sql_text.dbid heeft (soms) NULL's?

  • Binnen SQL2005 -> SQL2008R2 dbid is NULL "voor ad hoc en voorbereide SQL-instructies" (zie MSDN voor SQL Server 2008 R2 ).
  • Binnen SQL 2012 "Voor ad hoc en voorbereide SQL-instructies, de ID van de database waarin de instructies zijn gecompileerd" (zie MSDN ). Dus vanaf SQL2012 dbid retourneert een niet-NULL-waarde inclusief "ad hoc en voorbereide SQL-instructies".

3) Om dit probleem op te lossen in SQL2008 -> SQL2008R2 heb ik sys.dm_exec_plan_attributes gebruikt (zie 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. 2 manieren om een ​​nieuwe regel in een string in SQLite in te voegen

  2. Hoe te controleren of sqlplus verbinding kan maken?

  3. pg_dump met --exclude-table bevat nog steeds die tabellen op de achtergrond COPY-commando's die het uitvoert?

  4. Inzicht in door PDO opgestelde verklaringen en bindende parameters