sqlserver 实现数据变动触发信息

1、建立存储过程,功能是动态写入文件中信息,可以在触发器或存储过程调用。

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
create proc [dbo].[SP_SendMagToFile]
(
  @path varchar(100),
  @fileName varchar(100),
  @msg varchar(200)
)
as
begin
  DECLARE   @object   int
  DECLARE   @hr   int
  DECLARE   @src   varchar(255),   @desc   varchar(255)
  Declare   @tmp   int
  declare   @strPath     nvarchar(512)
  Set   @strPath=@path+‘\‘+@fileName       --組成文件名

  EXEC   @hr   =   sp_OACreate   ‘Scripting.FileSystemObject‘,   @object   OUT
  IF   @hr   <>   0
  BEGIN
        EXEC   sp_OAGetErrorInfo   @object,   @src   OUT,   @desc   OUT
        SELECT   hr=convert(varbinary(4),@hr),   Source=@src,   Description=@desc
        RETURN
  END

  --創建文件
  EXEC   @hr   =   sp_OAMethod   @object,   ‘CreateTextFile‘,   @tmp   OUTPUT   ,   @strPath
  IF   @hr   <>   0
  BEGIN
        EXEC   sp_OAGetErrorInfo   @object
          RETURN
  END
  --把@msg寫到文件里面去
  EXEC   @hr   =   sp_OAMethod   @tmp,   ‘Write‘,NULL,   @msg
  IF   @hr   <>   0
  BEGIN
        EXEC   sp_OAGetErrorInfo   @object
          RETURN
  END
  --關閉文件
  EXEC   @hr   =   sp_OAMethod   @tmp,   ‘Close‘,NULL
  IF   @hr   <>   0
  BEGIN
    EXEC   sp_OAGetErrorInfo   @object
    RETURN
  END
end

2、服务端监听给文件夹是否被更新,如果更新就发送信息或执行程序等。

3、这样可以减少网络传输的压力。

4、也可以执行发送http,实现更新数据的功能

sp_configure ‘show advanced options‘, 1;
GO
RECONFIGURE;
GO
sp_configure ‘Ole Automation Procedures‘, 1;
GO
RECONFIGURE;
GO
EXEC sp_configure ‘Ole Automation Procedures‘;
GO

/*
参数说明?
@URL=http请求地址
@status=状态代?
@returnText=返回?
@object=对象令牌
@errSrc=错误源编?
*/
CREATE PROCEDURE P_GET_HttpRequestData(
    @URL varchar(500),
    @status int=0 OUT,
    @returnText varchar(2000)=‘‘ 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, @returnText OUT
     RETURN
    END

    /*创建链接*/
    EXEC @status= SP_OAMethod @object,‘open‘,NULL,‘GET‘,@URL
    IF @status <> 0
    BEGIN
     EXEC SP_OAGetErrorInfo @object, @errSrc OUT, @returnText 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, @returnText OUT
     RETURN
    END

    /*获取返回*/
    EXEC @status= SP_OAGetProperty @object,‘responseText‘,@returnText OUT
    IF @status <> 0
    BEGIN
     EXEC SP_OAGetErrorInfo @object, @errSrc OUT, @returnText OUT
     RETURN
    END
END;
时间: 2024-08-08 07:41:58

sqlserver 实现数据变动触发信息的相关文章

sqlserver导入数据时常出现的错误解答

在做SSIS项目的Data Coversion时,经常会遇到类似如下两个问题: 1.Validating (Error) Messages * Error 0xc02020f4: Data Flow Task 1: The column "xxxx" cannot be processed because more than one code page (936 and 1252) are specified for it. (SQL Server Import and Export

(四) 一起学 APUE 之 系统数据文件和信息

. . . . . 目录 (一) 一起学 APUE 之 标准 IO (二) 一起学 APUE 之 文件 IO (三) 一起学 APUE 之 文件和目录 (四) 一起学 APUE 之 系统数据文件和信息 1.getpwnam(3).getpwuid(3) 1 getpwnam, getpwuid - get password file entry 2 3 #include <sys/types.h> 4 #include <pwd.h> 5 6 struct passwd *getp

查看SQLSERVER内部数据页面的小插件Internals Viewer

原文:查看SQLSERVER内部数据页面的小插件Internals Viewer 查看SQLSERVER内部数据页面的小插件Internals Viewer 感觉internals viewer这个名字起得很好,内部查看. 这个小工具是我之前看园子里的某大侠转载的文章是看到的 文章地址:SQL Server2008存储结构之堆表.行溢出 http://www.cnblogs.com/trams/archive/2010/09/11/1823727.html 这几天研究了一下这个小工具,发现挺好用

MYSQL同步Sqlserver数据库数据

MYSQL同步sqlserver数据库数据的方法. 1.下载安装SQLyog v10.51,确保本机安装了Mysql和Sql server 2008 r2. 2.使用SQLyog连上本地mysql数据库 3.点数据库>导入>导入外部数据 进入SQLyog外部数据导入向导,选择"开始新的工作",点"下一步" 4.在数据源类型中只有access.excel.csv.任何odbc数据源.使用前面三个中间数据格式转换方式都可以导入不过就麻烦了.这里我们选择任何O

sqlserver 大数据量的insert、delete操作优化

http://blog.csdn.net/lanyuzhen/article/details/7547476 --大批量导出orders表:insert DBCC DROPCLEANBUFFERS  DBCC FREEPROCCACHE goSET NOCOUNT ON BEGIN TRANSACTION  INSERT INTO test.dbo.orders with(tablock) SELECT * FROM bak.dbo.OrdersWHERE ordertime BETWEEN '

6.数据分组-统计信息

---数据分组-统计信息----- --select 字段列表from 表列表 where 对数据源进行数据筛选group by 分组字段列表Order by 排序字段列表 --1.得到所有学员总人数 select COUNT(*) from Student --2.得到男女生的人数 select COUNT(*) from Student where Sex='男' select COUNT(*) from Student where Sex='女' --使用分组统计 select COUNT

[CodePractice]使用数据本身的信息

sum: 如果一个信息是包含在数据中的,那么即便读取这个信息要多谢两行代码,但是还是应该直接去使用它,而不是通过记忆来获得和保持一致. 这样更简洁,更具扩展性. 而记忆方式在代码量达到一定程度之后会带来质变级的脑力负担和出错几率. details: 昨天出现的一个错误就是搞错了render target的size. 本身的实现大致是这样: //config RenderTargetSize size; xxxxSize size0; xxxxSize size1; //init RenderTa

sqlserver查询数据的所有表名和行数

原文:sqlserver查询数据的所有表名和行数 //查询所有表明select name from sysobjects where xtype='u' select * from sys.tables //查询数据库中所有的表名及行数 SELECT a.name AS [TABLE NAME] , b.rows AS [RECORD COUNT] FROM sysobjects AS a INNER JOIN sysindexes AS b ON a.id = b.id WHERE ( a.t

【只怕没有几个人能说清楚】系列之四:碰撞信息、触发信息的检测

碰撞器分为三种: static collider 静态碰撞器 rigidbody collider 刚体碰撞器 kinematic rigidbody collider 运动学刚体碰撞器 将碰撞器勾选is trigger即为触发器: static trigger collider 静态触发器 rigidbody trigger collider 刚体触发器 kinematic rigidbody trigger collider        运动学刚体触发器 结论: 1.检测碰撞信息: 两个物