SQL 2016始终加密列和SQL临时表(#TEMP)



我们正在寻找一个解决方案,以实现数据库中的"始终加密"列,我们同时使用了许多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

最新更新