Вытаскивание дешифрованного столбца БД SQL Server в страницу ASP.Net завершается ошибкой - PullRequest
0 голосов
/ 14 января 2011

У нас есть хранимая процедура, которая возвращает зашифрованные столбцы БД, расшифрованные с помощью DecryptByKeyAutoCert ().Это вызывается через нашу страницу asp.net (через System.Data.SqlClient.SqlCommand) и привязывается к элементу управления Repeater.Любые столбцы, которые проходят процедуру расшифровки, не отображаются на нашей странице asp.net.Незашифрованные столбцы, возвращенные процедурой, отображаются нормально.DecryptByKeyAutoCert возвращает varbinary, поэтому я запускаю результат через CONVERT, чтобы varchar.

IE.

SELECT CONVERT(varchar(50), DecryptByKeyAutoCert( CERT_ID('ourCertId') , NULL, b.Address2 )) AS Address2
     ...

Эта хранимая процедура прекрасно работает при тестировании в SSMS.Есть идеи?

Ответы [ 3 ]

1 голос
/ 14 января 2011

Имеет ли подключение к учетной записи пула приложений ASP.Net разрешение и ключ доступа к ключу расшифровки? Чем шифруется ourCertId? Ваш тест из SSMS попытается расшифровать с использованием других учетных данных, чем ASP.Net.

1 голос
/ 14 января 2011

Убедитесь, что приложение ASP.Net не использует метаданные таблицы для визуализации столбцов.Возможно, вы думаете, что столбец Address2 - это Varbinary, когда вы сейчас преобразовали его в Varchar.Чтобы быть уверенным, попробуйте создать представление, используя расшифрованные столбцы и используя простое представление в качестве источника для повторителя.

0 голосов
/ 14 января 2011

Как отметил Ремус Русану (спасибо), необходимо убедиться, что разрешения предоставлены.Я пропустил их для используемого пользователя.

От MSDN

Разрешения Требуется разрешение VIEW DEFINITION для симметричного ключа и разрешение CONTROL для сертификата.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...