我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 调用包装在数据库 A 中的函数中,如下所示:
CREATE FUNCTION dbo.MyEncrypt(@Data VARCHAR(4000))
RETURNS TABLE
AS
RETURN
SELECT ENCRYPTBYCERT(CERT_ID('MyCert'),@Data) EncryptedData;
要在连接到数据库 B 的同时将数据插入到数据库 A 中的表中,请使用以下内容:
INSERT INTO DatabaseA.dbo.MyTable(id,EncryptedData)
VALUES(42, (SELECT EncryptedData FROM DatabaseA.dbo.MyEncrypt('testvalue')) );