sql >> Databáze >  >> RDS >> Sqlserver

DMF sys.dm_exec_sql_text nezobrazuje DBID

1) Toto chování je dostupné v SQL2005 -> SQL2008R2.

2) Proč sys.dm_exec_sql_text.dbid má (někdy) NULL?

  • V rámci SQL2005 -> SQL2008R2 dbid je NULL „pro ad hoc a připravené příkazy SQL“ (viz MSDN pro SQL Server 2008 R2 ).
  • V rámci SQL 2012 „U ad hoc a připravených příkazů SQL ID databáze, kde byly příkazy zkompilovány“ (viz MSDN ). Takže od SQL2012 dbid vrátí hodnotu jinou než NULL včetně „ad hoc a připravených příkazů SQL“.

3) K vyřešení tohoto problému v SQL2008 -> SQL2008R2 jsem použil sys.dm_exec_plan_attributes (viz 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. Vložit do více tabulek na základě dat jiné tabulky

  2. Maximální velikost fondu připojení

  3. Jak spustit SQL skript v MySQL?

  4. Interval časového razítka