我想知道如何将对称密钥作为参数传递给 SQL 查询。
我通常在查询中对其进行硬编码,如下所示:
OPEN SYMMETRIC KEY SymKey
DECRYPTION BY CERTIFICATE CertiFi;
SELECT * FROM MasterBlaster
CLOSE SYMMETRIC KEY SymKey
但我想将它作为参数传递。
根据https://learn.microsoft.com/en-us/sql/t-sql/statements/open-symmetry-key-transact-sql?view=sql-server-ver16你不能使用参数或 OPEN KEY 语句中的变量。一种方法是:
declare @key nvarchar(100) = 'test'
, @sql nvarchar(max)
set @sql = N'
OPEN SYMMETRIC KEY ' + QUOTENAME(@key) + N'
DECRYPTION BY CERTIFICATE CertiFi;
SELECT * FROM MasterBlaster;
CLOSE SYMMETRIC KEY ' + QUOTENAME(@key) + N';'
EXEC SP_EXECUTESQL @SQL
注意,你必须小心sql注入,因此使用QUOTENAME