sys.fn_check_object_signatures (Transact-SQL)

傳回所有可簽署物件的清單,並指出物件是否由指定的憑證或非對稱金鑰所簽署。如果此物件是由指定的憑證或非對稱金鑰所簽署,它也會傳回此物件的簽章是否有效。

主題連結圖示Transact-SQL 語法慣例

語法

fn_ check_object_signatures ( 
    { '@class' } , { @thumbprint } 
    ) 

引數

  • { '@class' }
    識別所提供之指模的類型:

    • 'certificate'

    • 'asymmetric key'

    @class 是 sysname。

  • { @thumbprint }
    用來加密金鑰的憑證 SHA-1 雜湊,或用來加密金鑰的非對稱金鑰 GUID。@thumbprint 是 varbinary(20)。

傳回的資料表

下表將列出 fn_check_object_signatures 所傳回的資料行。

資料行

類型

描述

type

nvarchar(120)

傳回類型描述或組件。

entity_id

int

傳回所評估之物件的物件識別碼。

is_signed

int

當此物件並非由提供的指模所簽署時,傳回 0。當此物件是由提供的指模所簽署時,傳回 1。

is_signature_valid

int

如果 is_signed 值是 1,就會在簽章無效時傳回 0。當簽章有效時,則傳回 1。

如果 is_signed 值是 0,則一律傳回 0。

備註

您可以使用 fn_check_object_signatures 來確認惡意使用者是否尚未竄改物件。

權限

需要憑證或非對稱金鑰的 VIEW DEFINITION。

範例

下列範例會尋找 master 資料庫的結構描述簽署憑證,然後針對由結構描述簽署憑證所簽署而且具有有效簽章的物件,傳回 is_signed 值 1 和 is_signature_valid 值 1。

USE master
-- Declare a variable to hold the thumbprint.
DECLARE @thumbprint varbinary(20) ;
-- Populate the thumbprint variable with the master database schema signing certificate.
SELECT @thumbprint = thumbprint 
FROM sys.certificates 
WHERE name LIKE '%SchemaSigningCertificate%' ;
-- Evaluates the objects signed by the schema signing certificate
SELECT type, entity_id, OBJECT_NAME(entity_id) AS [object name], is_signed, is_signature_valid
FROM sys.fn_check_object_signatures ('certificate', @thumbprint) ;
GO