Sql-Server

在資源數據庫中查找對象的名稱

  • August 3, 2022

我正在查看sys.dm_exec_function_stats視圖以查找標量函式統計資訊。該視圖還包括 ID 為32767的數據庫中的行,我發現它是Resource database

其中一些 ID 可以傳遞給OBJECT_NAME()OBJECT_DEFINITION()數據函式,但一些 ID 返回NULL

SELECT SERVERPROPERTY('ResourceVersion')  AS 'ResourceVersion'
SELECT SERVERPROPERTY('ResourceLastUpdateDateTime') AS 'ResourceLastUpdateDateTime' 

SELECT 
   defs.database_id
   , defs.object_id
   , OBJECT_NAME(defs.object_id) AS objName
   , OBJECT_DEFINITION(defs.object_id) AS objDef
   , OBJECT_NAME(defs.object_id, defs.database_id) AS objNameDB
   , OBJECT_DEFINITION(defs.object_id, defs.database_id) AS objDefDB
FROM sys.dm_exec_function_stats AS defs
WHERE defs.database_id = 32767

在此處輸入圖像描述

我可以在or in中找到fn_hadr_is_primary_replica函式 (object_id = -665919249) ,但在 object_id = -706609674 中找不到。sys.all_objects``sys.all_sql_modules

有什麼方法可以找到-706609674的對象名稱或定義?

在我的例子中,對象 id -706609674 是sys.fn_cdc_jobs.

資源數據庫只是另一個數據庫,其中包含您可以複製並以不同名稱附加的文件。

這些文件被命名為mssqlsystemresource.mdfmssqlsystemresource.ldf

您可以在安裝的子目錄中找到它們\MSSQL\Binn

或者,從 DAC 執行您的命令。

引用自:https://dba.stackexchange.com/questions/315169