2012-07-23 3 views
1

데이터베이스에 A 데이터베이스가 있는데 인증서와 테이블이 있습니다. 데이터베이스에있는 테이블에 암호화 된 값을 삽입하려고합니다 A. 데이터베이스 B는 저장 프로 시저 또는 인증서를 이동하지 않고 데이터베이스 A다른 데이터베이스의 SQL 인증서 사용

에서 인증서를 찾을 수 없기 때문에,

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

이 항상 실패합니다 : 저장된 프로 시저를 데이터베이스 B에 이상적으로 이런 전화를 할 것입니다 , A 데이터베이스의 인증서를 사용하여 B 데이터베이스에 암호화 된 값을 생성하려면 어떻게해야합니까?

답변

0

이 같은 데이터베이스 (A)에 사는 함수에서 EncryptByCert 호출을 래핑 수 :

CREATE FUNCTION dbo.MyEncrypt(@Data VARCHAR(4000)) 
RETURNS TABLE 
AS 
RETURN 
SELECT ENCRYPTBYCERT(CERT_ID('MyCert'),@Data) EncryptedData; 

데이터베이스 (A)에 테이블에 데이터를 삽입하려면를하면서이 같은 데이터베이스 B 사용 무언가에 연결 :

INSERT INTO DatabaseA.dbo.MyTable(id,EncryptedData) 
VALUES(42, (SELECT EncryptedData FROM DatabaseA.dbo.MyEncrypt('testvalue'))); 
관련 문제