У вас вопросы?
У нас ответы:) SamZan.net

Использование COM-объектов в хранимых процедурах SQL Server

Работа добавлена на сайт samzan.net: 2015-07-10

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 1.7.2025

Использование COM-объектов в хранимых процедурах SQL Server

Рассмотрим, например, ситуацию, когда хранимая процедура по входному параметру паролю брала бы его MD5 значение и заносила полученное значение в таблицу.

Такая ситуация может возникнуть при регистрации пользователей, когда в таблице находятся не реальные пароли, а их MD5 значения.

Возникает вопрос - можно ли функционал по взятию MD5 значений паролей перенести в хранимую процедуру, если существует COM-объект, который генерит хэш-значения MD5 ?

Конечно, эту процедуру можно реализовать в приложении через простой вызов COM-объекта, но мы рассмотрим как это можно сделать в Transact-SQL.

В качестве COM-объекта возьмем ActiveX-компонент CryptLib, который можно взять на данном сайте http://www.activex.net.ru/activex/more.shtml#cryptlib и зарегистрировать в реестре стандартно через regsvr32.

Далее воспользуемся системными процедурами SQL Server, которые позволяют работать с COM-объектами:

 sp_OACreate

 sp_OAMethod

 sp_OADestroy

  sp_OAGetErrorInfo

Для запуска этих системных процедур пользователь, от имени которого будет запускаться наша процедура, должен входить в роль sysadmin.

Текст процедуры InsertMD5Value:

CREATE PROCEDURE dbo.InsertMD5Value

@Login Varchar(50), @Password Varchar(50)

AS

DECLARE @object int

DECLARE @hr Int

DECLARE @md5_hash varchar(255)

DECLARE @src varchar(255), @desc varchar(255)

SET NOCOUNT ON

EXEC @hr = sp_OACreate 'CryptLib.MD5', @object OUT

IF @hr <> 0

   -- Сообщение об ошибке

   BEGIN

   

   EXEC sp_OAGetErrorInfo @object, @src OUT, @desc OUT

   SELECT hr=convert(varbinary(4),@hr), Source=@src, Description=@desc

   GOTO END_FINAL

   END

ELSE

   BEGIN

   EXEC @hr = sp_OAMethod @object, 'Crypt', @md5_hash OUT, @Password

   IF @hr <> 0

   GOTO CLEANUP

   ELSE

   PRINT @md5_hash

   -- для примера просто печатаем MD5 значение.

   -- здесь можно делать вставку полученного MD5 значения в таблицу,

   -- предварительно сделав проверку на существование в таблице значения

   -- из переданного параметра @Login

   -- INSERT INTO UsersReg (Login, Passwd) VALUES (@Login, @Password)

   END

CLEANUP:

  IF @hr <> 0

  BEGIN

  EXEC sp_OAGetErrorInfo @object, @src OUT, @desc OUT

  SELECT hr=convert(varbinary(4),@hr), Source=@src, Description=@desc

  END

  BEGIN

  EXEC @hr = sp_OADestroy @object

  IF @hr <> 0

  BEGIN

  EXEC sp_OAGetErrorInfo @object, @src OUT, @desc OUT

  SELECT hr=convert(varbinary(4),@hr), Source=@src, Description=@desc

  END

  END

END_FINAL:

RETURN

Для запуска этой хранимой процедуры достаточно просто выполнить

EXEC dbo.InsertMD5Value 'user1', 'test'

Христофоров Юрий 

Список литературы

Для подготовки данной работы были использованы материалы с сайта http://www.activex.net.ru/




1.  Экологический аудит
2. Вариант 2 1. Важными средствами эстетического воспитания являются 2 варианта ответа художественн
3. Методы семейной воспитания.html
4. задание- Выписать по одному слову с безударными е и о в корне слова приписать к ним проверочные слова.
5. 7665800313 ОЦІНКА ВПЛИВУ ТІНІЗАЦІЇ ДІЯЛЬНОСТІ ВУГІЛЬНИХ ШАХТ НА ФІНАНСОВУ РЕЗУЛЬТАТИВНІСТЬ Спец
6. Общество взаимного страхования
7. Усовершенствование схемы очистки воздуха от пыли на ОА
8. Курсовая работа- Планирование в организации на примере страховой компании
9. Тюменский государственный нефтегазовый университет Институт транспорта Кафедра Ои
10. Челябинский государственный университет ФГБОУ ВПО ЧелГУ Костанайский филиал Кафедра эконо.1