我们正在寻找一个解决方案,以实现数据库中的"始终加密"列,我们同时使用了许多SQL临时表(#TMP)。
我们探索了替代路径 - 停止使用#TEMP表,但这意味着在时间/成本方面对我们的应用产生很大的影响。
是否有人找到了写出查询的方法
我尝试将相同的CMK和CEK应用于TEMPDB数据库,以便我可以为#TMP表创建相同的结构,作为my_table的结构。但是,这并不能解决问题 - 在两个不同数据库中将表似乎阻止了数据传输。
我正在寻找一个SQL解决方案,而不是涉及客户端应用程序(C#,VB等)的解决方案,该解决方案可以访问所有加密密钥。
以您所描述的方式插入操作,不支持加密的列。
"插入#TMP从my_table中进行选择"
您将必须编写客户端应用以获得类似的结果。如果您想探索这条路,请发表评论,我可以指导您。
您应该能够在C#中获得类似的东西。
- do
select * from encryptedTable
将数据加载到sqldatareader中,然后使用sqlbulkcopy使用SqlBulkCopy.WriteToServer(IDataReader)
方法
将其加载到temp表中
如果您在同一SQL Server实例上具有加密的表和明文表,请注意,您可以将信息泄漏到SQL Server Admin,因为它们可以检查明文数据和相应的ciphertext