我有数据库A
在这个数据库有一个证书和一张桌子。 我想插入一个加密值到表是在数据库A
。 存储过程是在数据库中B
,并在理想情况下做出这样的呼吁:
EncryptByCert(Cert_ID('CertifiacteName'), 'SecretData')
这总是会失败,因为数据库B
找不到数据库中的证书A
而无需移动存储过程或证书,如何可以创建在数据库的加密值B
使用在数据库中的证书A
?
我有数据库A
在这个数据库有一个证书和一张桌子。 我想插入一个加密值到表是在数据库A
。 存储过程是在数据库中B
,并在理想情况下做出这样的呼吁:
EncryptByCert(Cert_ID('CertifiacteName'), 'SecretData')
这总是会失败,因为数据库B
找不到数据库中的证书A
而无需移动存储过程或证书,如何可以创建在数据库的加密值B
使用在数据库中的证书A
?
你可以在换一种生活在数据库中的这样一个功能EncryptByCert电话:
CREATE FUNCTION dbo.MyEncrypt(@Data VARCHAR(4000))
RETURNS TABLE
AS
RETURN
SELECT ENCRYPTBYCERT(CERT_ID('MyCert'),@Data) EncryptedData;
将数据插入到你的表在数据库中的,同时连接到数据库B使用的是这样的:
INSERT INTO DatabaseA.dbo.MyTable(id,EncryptedData)
VALUES(42, (SELECT EncryptedData FROM DatabaseA.dbo.MyEncrypt('testvalue')) );