sql >> Databasteknik >  >> RDS >> Sqlserver

DMF sys.dm_exec_sql_text visar inte DBID

1) Detta beteende är tillgängligt i SQL2005 -> SQL2008R2.

2) Varför sys.dm_exec_sql_text.dbid har (ibland) NULLs ?

  • Inom SQL2005 -> SQL2008R2 dbid är NULL "för ad hoc och förberedda SQL-satser" (se MSDN för SQL Server 2008 R2 ).
  • Inom SQL 2012 "För ad hoc och förberedda SQL-satser, ID för databasen där satserna kompilerades" (se MSDN ). Så från och med SQL2012 dbid returnerar ett icke-NULL-värde inklusive "ad hoc och förberedda SQL-satser".

3) För att lösa detta problem i SQL2008 -> SQL2008R2 använde jag sys.dm_exec_plan_attributes (se 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. npgsql-problem i c#-appen - En befintlig anslutning stängdes med tvång av fjärrvärden

  2. Skapa och använd temptabell i kapslade frågor

  3. Skripta över ssh genom kitt på windows

  4. Ändra tidszonskomponent i TIMESTAMP MED TIMEZONE i Oracle