1) यह व्यवहार SQL2005 -> SQL2008R2 में उपलब्ध है।
2) क्यों sys.dm_exec_sql_text.dbid
है (कभी-कभी) NULLs ?
- SQL2005 के भीतर -> SQL2008R2
dbid
NULL है "तदर्थ और तैयार SQL कथन के लिए" (देखें MSDN एसक्यूएल सर्वर 2008 R2 ) - एसक्यूएल 2012 के भीतर "तदर्थ और तैयार एसक्यूएल स्टेटमेंट के लिए, डेटाबेस की आईडी जहां स्टेटमेंट संकलित किए गए थे" (देखें MSDN
) तो, SQL2012 से शुरू
dbid
"तदर्थ और तैयार 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