sql >> データベース >  >> RDS >> Sqlserver

DMF sys.dm_exec_sql_text に DBID が表示されない

    1) この動作は SQL2005 -> SQL2008R2 で利用可能です。

    2) sys.dm_exec_sql_text.dbid の理由 (時々)NULLがありますか?

    • SQL2005 内 -> SQL2008R2 dbid 「アドホックおよび準備済み SQL ステートメントの場合」は NULL です (SQL Server 2008 R2 )。
    • SQL 2012 内で「アドホックおよび準備済み SQL ステートメントの場合、ステートメントがコンパイルされたデータベースの ID」(MSDN )。したがって、SQL2012 dbid から開始します。 「アドホックおよび準備済み SQL ステートメント」を含む NULL 以外の値を返します。

    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
    


    1. バックグラウンドプロセス

    2. 単一の列の値を複数の列の値に分割するにはどうすればよいですか?

    3. OracleODP.NetおよびEFCodeFirstと連携するようにDbContextを構成するにはどうすればよいですか。

    4. AWS RDSでのMySQLからPostgreSQLへの移行、パート4