Sdílet prostřednictvím


KEY_NAME (Transact-SQL)

platí pro:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL databáze v Microsoft Fabric

Vrací název symetrického klíče buď z GUID symetrického klíče, nebo šifrovaného textu.

Transact-SQL konvence syntaxe

Syntaxe

KEY_NAME ( ciphertext | key_guid )   

Arguments

Ciphertext
Je text zašifrovaný symetrickým klíčem. Šifrovaný text je typu varbinary(8000).

key_guid
Je GUID symetrického klíče. key_guid je typ uniqueidentifier.

Vrácené typy

varchar(128)

Povolení

Od SQL Server 2005 (9.x) je viditelnost metadat omezena na zabezpečené objekty, které uživatel vlastní nebo na které mu bylo uděleno určité oprávnění. Další informace naleznete v kapitole Konfigurace viditelnosti metadat.

Examples

A. Zobrazení názvu symetrického klíče pomocí key_guid

Hlavní databáze obsahuje symetrický klíč s názvem ##MS_ServiceMasterKey##. Následující příklad získá GUID tohoto klíče z pohledu sys.symmetric_keys dynamické správy, přiřadí ji proměnné a poté tuto proměnnou předá funkci KEY_NAME, aby ukázal, jak vrátit název odpovídající 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. Zobrazení názvu symetrického klíče pomocí šifrovaného textu

Následující příklad ukazuje celý proces vytváření symetrického klíče a naplnění dat do tabulky. Příklad pak ukazuje, jak KEY_NAME vrátí název klíče při předání šifrovaného textu.

-- 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] ;  

Viz také

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