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

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

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

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

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

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

от 25%

Подписываем

договор

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

Скидка 25% при заказе до 1.2.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. 50 от стоимости моста
3. Реферат- Строгановы первые из знаменитых людей
4. сюжет для новой песни
5. РЕФЕРАТ дисертації на здобуття наукового ступеня кандидата сільськогосподарських наук4
6. ПОЯСНИТЕЛЬНАЯ ЗАПИСКА к курсовому проекту по дисциплине Процессы и аппараты пищевых производств 1.html
7. На тему- Фирма в условиях конкуренции Студентка 1 курса Группы ’1 Специальность Правов
8. Реферат- Факторинг или форфейтинг - что лучше
9. і Сондыктан да адам тіршілікті~ ~~рамды бір б~лігі болып есептеледі
10. Тема- Робота з вбудованими об~єктами схемами формулами Мета- Вивчення графічних можливостей Word