使用其他数据库中的SQL证书

时间:2012-07-23 10:59:15

标签: sql-server-2008 encryption certificate

我在这个数据库中有数据库A,有一个证书和一个表。我想将加密值插入数据库A中的表中。存储过程在数据库B中,理想情况下会进行如下调用:

EncryptByCert(Cert_ID('CertifiacteName'), 'SecretData')

这将始终失败,因为数据库B无法在数据库中找到证书A

如果不移动存储过程或证书,如何使用数据库B中的证书在数据库A中创建加密值?

1 个答案:

答案 0 :(得分:0)

您可以将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')) );