Sql server 2005触发器发送http请求

Sql server2005中触发器发送http请求,可以通过创建存储过程,由存储过程发送http请求,触发器生成url参数,调用存储过程的方式。
1、存储过程示例
alter PROCEDURE P_GET_HttpRequestData(
	@URL varchar(500),
	@status int=0 OUT
)
AS
BEGIN
	DECLARE @object int,
	@errSrc int
	/*初始化对*/
	EXEC @status = SP_OACreate 'Msxml2.ServerXMLHTTP.3.0', @object OUT;
	IF @status <> 0
	BEGIN
	 EXEC SP_OAGetErrorInfo @object, @errSrc OUT
	 RETURN
	END
	/*创建链接*/
	EXEC @status= SP_OAMethod @object,'open',NULL,'GET',@URL
	IF @status <> 0
	BEGIN
	 EXEC SP_OAGetErrorInfo @object, @errSrc OUT
	 RETURN
	END
	EXEC @status=SP_OAMethod @object,'setRequestHeader','Content-Type','application/x-www-form-urlencoded'
	/*发起请求*/
	EXEC @status= SP_OAMethod @object,'send',NULL 
	IF @status <> 0 
	BEGIN 
	 EXEC SP_OAGetErrorInfo @object, @errSrc OUT
	 RETURN
	END
END;


2、需要通过配置sql server 2005外围应用配置器,启用SP_OACreate
“开始”--“Microsoft SQL Server 2005”--“配置工具”--“sql server 2005外围应用配置器”--“功能外围应用配置器”
选择“OLE自动化” 勾选“启用OLE自动化”



勾选后重启sql server 2005数据库服务。
3、创建触发器
alter trigger tag_test1
on test1
    for insert --插入触发
as
begin
declare @id varchar(50), @name varchar(50),@url varchar(4000),@t varchar(10);
select @id=id,@name=name from inserted;
--insert into test2 select id,name from inserted;
set @t='''';--为字符串中添加'我是信息'
set @url='http://localhost:8080/dojo01/Test_testList.do?'+ 
		+'sql=insert into test2(id,name)values('+@t+@id+@t+','+@t+@name+@t+')';--url
EXECUTE P_GET_HttpRequestData @url;
--insert into test2(id,name) values(@id,@name);
end;

4、测试表结构
test1


test2



猜你喜欢

转载自daoshud1.iteye.com/blog/1897231