1

このデータベースにはAデータベースがあり、証明書とテーブルがあります。database にあるテーブルに暗号化された値を挿入したいA。ストアド プロシージャはデータベースBにあり、理想的には次のような呼び出しを行います。

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

Bデータベースはデータベースで証明書を見つけることができないため、これは常に失敗しますA

Bストアド プロシージャまたは証明書を移動せずに、データベース内の証明書を使用してデータベース内に暗号化された値を作成するにはどうすればよいAですか?

4

1 に答える 1

0

次のように、データベース A に存在する関数で EncryptByCert 呼び出しをラップできます。

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')) );
于 2012-07-28T03:39:37.497 に答える