我有一个名为 demo 的表,其中包含三个字段。
ID int identity,
Name varbinary(128),
orderdate datetime
Demo 表具有加密的字段“名称”。
现在我有一个包含如下数据的平面文件
1,John,2016-01-01
我将如何在 SSIS 中实现这一目标?
在TSQL中,我可以这样输入数据
OPEN SYMMETRIC KEY STORE_CRYPT
DECRYPTION BY ASYMMETRIC KEY STORE_CRYPT_ASYM
INSERT INTO dbo.Demo (Name,OrderDate)
SELECT ENCRYPTBYKEY(KEY_GUID('STORE_CRYPT'),'John'),GETDATE()
CLOSE SYMMETRIC KEY STORE_CRYPT
最佳答案
最简单和最快的方法是使用数据存储为 varchar 的暂存表,然后添加执行加密并将数据插入目标表的执行 SQL 任务。
暂存表结构
ID int identity,
Name varchar(255),
orderdate datetime
执行 SQL 任务命令
OPEN SYMMETRIC KEY STORE_CRYPT
DECRYPTION BY ASYMMETRIC KEY STORE_CRYPT_ASYM
INSERT INTO dbo.Demo (Name,OrderDate)
SELECT ENCRYPTBYKEY(KEY_GUID('STORE_CRYPT'),Name),OrderDate
FROM StagingTable
CLOSE SYMMETRIC KEY STORE_CRYPT
其他可能的解决方案 (不确定是否有效)
尝试使用 OLEDB 命令转换而不是 OLEDB 目标并使用以下命令:(请注意,从性能角度来看,不建议使用 OLEDB 命令)
OPEN SYMMETRIC KEY STORE_CRYPT
DECRYPTION BY ASYMMETRIC KEY STORE_CRYPT_ASYM
INSERT INTO dbo.Demo (Name,OrderDate)
SELECT ENCRYPTBYKEY(KEY_GUID('STORE_CRYPT'),?),?
CLOSE SYMMETRIC KEY STORE_CRYPT
并将 Name
列映射到第一个参数,将 Orderdate
列映射到第二个
关于sql - 如何使用 SSIS 从平面文件中将数据插入到加密的 varbinary 字段中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55268369/