sql >> Database teknologi >  >> RDS >> Sqlserver

DMF sys.dm_exec_sql_text viser ikke DBID

1) Denne adfærd er tilgængelig i SQL2005 -> SQL2008R2.

2) Hvorfor sys.dm_exec_sql_text.dbid har (nogle gange) NULLs ?

  • Inden for SQL2005 -> SQL2008R2 dbid er NULL "for ad hoc og forberedte SQL-sætninger" (se MSDN for SQL Server 2008 R2 ).
  • I SQL 2012 "For ad hoc og forberedte SQL-sætninger, id'et for databasen, hvor sætningerne blev kompileret" (se MSDN ). Så startende fra SQL2012 dbid returnerer en ikke-NULL-værdi inklusive "ad hoc og forberedte SQL-sætninger".

3) For at løse dette problem i SQL2008 -> SQL2008R2 brugte jeg 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. Hvordan aktiverer jeg php til at arbejde med postgresql?

  2. Lagret procedure med flere IN-parametre

  3. Sådan genereres INSERT-sætninger fra en forespørgsel, når du bruger SQLcl (Oracle)

  4. Dupliker kolonnenavn på JOIN i mysql