KEY_NAME (Transact-SQL)

適用対象: SQL Server Azure SQL Database Azure SQL Managed Instance

対称キー GUID または暗号化テキストから対称キーの名前を返します。

Transact-SQL 構文表記規則

構文

KEY_NAME ( ciphertext | key_guid )   

引数

ciphertext
対称キーによって暗号化されたテキストを指定します。 暗号化テキスト は型です。 varbinary (8000)です。

key_guid
対称キーの GUID を指定します。 key_guid は型です。 uniqueidentifierです。

返される型

varchar(128)

アクセス許可

SQL Server 2005 (9.x) 以降で、メタデータの表示は、ユーザーが所有しているか、ユーザーがなんらかの権限を許可されているセキュリティ保護可能なリソースに制限されます。 詳細については、「 Metadata Visibility Configuration」を参照してください。

A. key_guid を使用して対称キーの名前を表示する

master データベースには、##MS_ServiceMasterKey## という名前の対称キーがあります。 次の例では、sys.symmetric_keys 動的管理ビューからそのキーの GUID を取得し、変数に割り当ててからその変数を KEY_NAME 関数に渡して、GUID に対応する名前を返す方法を示します。

USE master;  
GO  
DECLARE @guid uniqueidentifier ;  
SELECT @guid = key_guid FROM sys.symmetric_keys  
WHERE name = '##MS_ServiceMasterKey##' ;  
-- Demonstration of passing a GUID to KEY_NAME to receive a name  
SELECT KEY_NAME(@guid) AS [Name of Key];  

B. 暗号化テキストを使用して対称キーの名前を表示する

次の例では、対称キーを作成してテーブルにデータを入力するプロセス全体を示します。 次に、この例では、暗号化テキストが渡されたときに KEY_NAME によってキーの名前がどのように返されるかを示します。

-- Create a symmetric key  
CREATE SYMMETRIC KEY TestSymKey   
   WITH ALGORITHM = AES_128,  
   KEY_SOURCE = 'The square of the hypotenuse is equal to the sum of the squares of the sides',  
   IDENTITY_VALUE = 'Pythagoras'  
   ENCRYPTION BY PASSWORD = 'pGFD4bb925DGvbd2439587y' ;  
GO  
-- Create a table for the demonstration  
CREATE TABLE DemoKey  
(IDCol INT IDENTITY PRIMARY KEY,  
SecretCol VARBINARY(256) NOT NULL)  
GO  
-- Open the symmetric key if not already open  
OPEN SYMMETRIC KEY TestSymKey   
    DECRYPTION BY PASSWORD = 'pGFD4bb925DGvbd2439587y';  
GO  
-- Insert a row into the DemoKey table  
DECLARE @key_GUID uniqueidentifier;  
SELECT @key_GUID = key_guid FROM sys.symmetric_keys  
WHERE name LIKE 'TestSymKey' ;  
INSERT INTO DemoKey(SecretCol)  
VALUES ( ENCRYPTBYKEY (@key_GUID, 'EncryptedText'))  
GO  
-- Verify the DemoKey data  
SELECT * FROM DemoKey;  
GO  
-- Decrypt the data  
DECLARE @ciphertext VARBINARY(256);  
SELECT @ciphertext = SecretCol  
FROM DemoKey WHERE IDCol = 1 ;  
SELECT CAST (  
DECRYPTBYKEY( @ciphertext)  
AS VARCHAR(100) ) AS SecretText ;  
-- Use KEY_NAME to view the name of the key  
SELECT KEY_NAME(@ciphertext) AS [Name of Key] ;  

参照

sys.symmetric_keys (Transact-SQL)
ENCRYPTBYKEY (Transact-SQL)
DECRYPTBYKEYAUTOASYMKEY (Transact-SQL)