IS_OBJECTSIGNED (Transact-SQL)

适用于:SQL ServerAzure SQL 数据库Azure SQL 托管实例

指示对象由指定证书或非对称密钥签名。

Transact-SQL 语法约定

语法

IS_OBJECTSIGNED (   
'OBJECT', @object_id, @class, @thumbprint  
  )   

注意

若要查看 SQL Server 2014 (12.x) 及更早版本的 Transact-SQL 语法,请参阅早期版本文档

自变量

'OBJECT'
安全对象类的类型。

@object_id
要测试的对象的 object_id。 @object_id 为 int 类型。

@class
对象的类:

  • “证书”

  • “非对称密钥”

@class 为 sysname 类型。

@thumbprint
对象的 SHA 指纹。 @thumbprint 为 varbinary(32) 类型。

返回类型

int

备注

IS_OBJECTSIGNED 返回以下值。

返回值 说明
Null 对象未签名,或对象无效。
0 对象已签名,但签名无效。
1 该对象已签名。

权限

要求对证书或非对称密钥拥有 VIEW DEFINITION 权限。

示例

A. 显示数据库的扩展属性

下面的示例测试 master 数据库中的 spt_fallback_db 表是否由架构签名证书进行签名

USE master;  
-- Declare a variable to hold a thumbprint and an object name  
DECLARE @thumbprint varbinary(20), @objectname sysname;  
  
-- Populate the thumbprint variable with the thumbprint of   
-- the master database schema signing certificate  
SELECT @thumbprint = thumbprint   
FROM sys.certificates   
WHERE name LIKE '%SchemaSigningCertificate%';  
  
-- Populate the object name variable with a table name in master  
SELECT @objectname = 'spt_fallback_db';  
  
-- Query to see if the table is signed by the thumbprint  
SELECT @objectname AS [object name],  
IS_OBJECTSIGNED(  
'OBJECT', OBJECT_ID(@objectname), 'certificate', @thumbprint  
) AS [Is the object signed?] ;  

另请参阅

sys.fn_check_object_signatures (Transact-SQL)