IS_OBJECTSIGNED (Transact-SQL)
適用対象: SQL Server Azure SQL Database Azure SQL Managed Instance
オブジェクトが、指定した証明書または非対称キーで署名されているかどうかを示します。
構文
IS_OBJECTSIGNED (
'OBJECT', @object_id, @class, @thumbprint
)
引数
'OBJECT'
セキュリティ保護可能なクラスの型。
@object_id
テストされるオブジェクトの object_id。 @object_id は int 型です。
@class
オブジェクトのクラス :
'certificate'
'asymmetric key'
@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?] ;