sp_enclave_send_keys (Transact-SQL)

Applies to: SQL Server 2019 (15.x) and later - Windows only

Sends columns encryption keys, defined in the database, to the server-side secure enclave used with Always Encrypted with secure enclaves.

sp_enclave_send_keys only sends only the keys that are enclave-enabled and encrypt columns that use randomized encryption and have indexes. For a regular user query, a client driver provides the enclave with the keys needed for computations in the query. sp_enclave_send_keys sends all column encryption keys defined in the database and used for indexes encrypted columns.

sp_enclave_send_keys provides an easy way to send keys to the enclave and populate the column encryption key cache for subsequent indexing operations. Use sp_enclave_send_keys to enable:

  • A DBA to rebuild or alter indexes or statistics on encrypted database columns, if the DBA doesn't have access to the column master key(s). See Invoke indexing operations using cached column encryption keys.

  • SQL Server to complete the recovery of indexes on encrypted columns. See Database Recovery.

  • An application using .NET Framework Data Provider for SQL Server to bulk load data to encrypted columns.

To successfully invoke sp_enclave_send_keys, you need to connect to the database with Always Encrypted and enclave computations enabled for the database connection. You also need to have access to column master keys, protecting the column encryption keys, you're going to send, and you need permissions to access Always Encrypted key metadata in the database.

Syntax

sp_enclave_send_keys
[ ; ]

Arguments

This stored procedure has no arguments.

Return value

This stored procedure has no return value.

Result set

This stored procedure has no result sets.

Permissions

Require the VIEW ANY COLUMN ENCRYPTION KEY DEFINITION and VIEW ANY COLUMN MASTER KEY DEFINITION permissions in the database.

Examples

EXEC sp_enclave_send_keys;