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

Использование 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'

Внимание, отключите Adblock

Вы посетили наш сайт со включенным блокировщиком рекламы!
Ссылка для скачивания станет доступной сразу после отключения Adblock!

Скачать полную версию
Рефераты по информатике Рассмотрим, например, ситуацию, когда хранимая процедура по входному параметру паролю брала бы его MD5 значение и заносила полученное значение в
Оценок: 323 (Средняя 5 из 5)

Наверняка у вас есть товары или услуги, продажа которых приносит вам максимальную прибыль. Для быстрого старта в сети вам необходимо создание посадочной страницы (одностраничного сайта), на которой будет размещена информация о маржинальных товарах/услугах интернет магазина. За 8 лет опыта разработки конверсионных страниц мы выработали оптимальную структуру, которая позволит привлекать через landing page больше продаж. На такую структуру «одевается» ваш контент — фирменный стиль, тексты, фотографии, уникальные торговые предложения, после чего страница выходит в свет. Разработка лендинга и запуск в сети — до 7 рабочих дней. Стоит отметить, что в разработку самой посадочной страницы входит и написание копирайтером продающих текстов для вашего бизнеса, чтобы каждый посетитель страницы захотел совершить покупку именно у вас. Результат: качественно разработаная продающая посадочная страница, которая готова приносить вам новых клиентов.

© 2016 - 2022 BigEdu.ru