Estou tentando determinar se posso usar Always Encrypted em uma coluna em uma tabela temporária (SQL Server 2016 SP1 Enterprise no Windows 2016). Eu tentei da seguinte forma:
CREATE TABLE #listofdates (compare_dt datetime2(7) encrypted with (
COLUMN_ENCRYPTION_KEY = [ColEnc1]
, ENCRYPTION_TYPE = Deterministic
, ALGORITHM = 'AEAD_AES_256_CBC_HMAC_SHA_256'
) NOT NULL
)
No entanto, recebo o erro:
Msg 33293, Level 16, State 8, Line 3
Não é possível localizar a chave de criptografia da coluna "ColEnc1" porque ela não existe ou você não tem permissões.
Eu acho que esse erro é enganoso, porque a instrução funciona se eu simplesmente substituir o nome da tabela #listofdates
por outro nome sem o # inicial (portanto, alternando de uma tabela temporária para uma tabela comum).
A seção no site da MS que lista os limites/restrições no Always Encrypted não menciona tabelas temporárias.
Parece que você precisa criar uma CMK e uma CEK no tempdb.
Este comando funciona em minha máquina® e é amplamente copiado/colado de artigos BOL.
Estou supondo que a CEK [ColEnc1] reside no mesmo banco de dados em que reside a tabela listofdates. Tente criar a CMK e a CEK na tabela tempdb e o erro deve desaparecer.