Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

DMF sys.dm_exec_sql_text tidak menampilkan DBID

1) Perilaku ini tersedia di SQL2005 -> SQL2008R2.

2) Mengapa sys.dm_exec_sql_text.dbid memiliki (kadang-kadang) NULL ?

  • Dalam SQL2005 -> SQL2008R2 dbid adalah NULL "untuk ad hoc dan pernyataan SQL yang disiapkan" (lihat MSDN untuk SQL Server 2008 R2 ).
  • Dalam SQL 2012 "Untuk pernyataan SQL ad hoc dan yang disiapkan, ID database tempat pernyataan dikompilasi" (lihat MSDN ). Jadi, mulai dari SQL2012 dbid akan mengembalikan nilai non-NULL termasuk "pernyataan SQL ad hoc dan siap".

3) Untuk mengatasi masalah ini di SQL2008 -> SQL2008R2 saya menggunakan sys.dm_exec_plan_attributes (lihat 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Catat perubahan ke tabel database dengan pemicu

  2. SQL:Pilih 3 Catatan Teratas + Jumlah Kuantitas

  3. bagaimana cara memeriksa struktur kolom di ssis?

  4. Log4net menulis objek khusus ke database sql menggunakan appender khusus?

  5. Bagaimana Anda menentukan nomor port yang berbeda di SQL Management Studio?