Quantcast
Channel: Recent Questions - Stack Overflow
Viewing all articles
Browse latest Browse all 12111

Allow a Stored Procedure to decrypt an encrypted column

$
0
0

I created a symmetric key in SQL2016 and then encrypted a single column in the Data Table (PhoneNo).If I run the following code the field is unencrypted and displays the result

OPEN SYMMETRIC KEY SymKey_Test DECRYPTION BY CERTIFICATE Certificate_Test;SELECT        ClientContactTest.ClientID, ClientContactTest.ContactID, ClientContactTest.Title, ClientContactTest.Forename, ClientContactTest.Surname, CONVERT(varchar, DecryptByKey(ClientContactTest.PhoneNo_Encrypt)) AS PhoneNo, ClientContactTest.MobileNo, ClientContactTest.EMailAddress,                             Lookup_ContactType.Description AS ContactTypeDescriptionFROM            ClientContactTest LEFT OUTER JOIN                            Lookup_ContactType ON ClientContactTest.ContactTypeID = Lookup_ContactType.ContactTypeIDWHERE        (ClientContactTest.ClientID = 7) AND (ClientContactTest.SiteID = 0) AND (ClientContactTest.ContactID = 1)CLOSE SYMMETRIC KEY SymKey_Test

BUT if I put the exact same code inside a stored procedure it returns NULL on this field.

CREATE PROCEDURE [dbo].[ClientContactTest_LoadRecord_Encrypted]ASBEGIN    OPEN SYMMETRIC KEY SymKey_Test DECRYPTION BY CERTIFICATE Certificate_Test;    SELECT        ClientContactTest.ClientID, ClientContactTest.ContactID, ClientContactTest.Title, ClientContactTest.Forename, ClientContactTest.Surname, CONVERT(varchar, DecryptByKey(ClientContactTest.PhoneNo_Encrypt)) AS PhoneNo, ClientContactTest.MobileNo, ClientContactTest.EMailAddress,                                 Lookup_ContactType.Description AS ContactTypeDescription    FROM            ClientContactTest LEFT OUTER JOIN                                Lookup_ContactType ON ClientContactTest.ContactTypeID = Lookup_ContactType.ContactTypeID    WHERE        (ClientContactTest.ClientID = 7) AND (ClientContactTest.SiteID = 0) AND (ClientContactTest.ContactID = 1)    CLOSE SYMMETRIC KEY SymKey_TestEND

The SP has execute permission to a Role called CRMObjects.How do I get the correct result to be returned?

Tried the following but no difference

GRANT CONTROL ON CERTIFICATE :: Certificate_Test TO CRMObjects;GRANT CONTROL ON SYMMETRIC KEY :: SymKey_Tes TO CRMObjectsGRANT VIEW DEFINITION ON SYMMETRIC KEY::SymKey_Tes TO CRMObjectsGRANT VIEW DEFINITION ON Certificate::[Certificate_Tes] TO CRMObjects

Viewing all articles
Browse latest Browse all 12111

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>