Sqlserver数据库 通过表触发器 实时通知应用程序
/*
Sqlserver数据库开始相关服务
以下示例显示了如何查看 OLE Automation Procedures 的当前设置。0未启用
*/
EXEC sp_configure 'show advanced option', '1' --只有这个高级选项被打开的时候,才有权限修改其他配置。
go
RECONFIGURE --运行RECONFIGURE语句进行安装,也就是说,使以上语句生效
go
EXEC sp_configure 'Ole Automation Procedures';
GO --启用Ole Automation Procedures
sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
sp_configure 'Ole Automation Procedures', 1;
GO
RECONFIGURE;
GO ---通过sql server 2008 调用应用程序
CREATE PROCEDURE [dbo].[pro_NotifyApp](
@Id NVARCHAR(20),
@Content NVARCHAR(MAX)
)
AS
BEGIN
declare @ServiceUrl as varchar(1000) PRINT 'http://localhost:789/home/GetNotify?id=' + @Id + '&message=' + @Content
--通过http协议调用的接口地址'
set @ServiceUrl = 'http://localhost:789/home/GetNotify?id=' + @Id + '&message=' + @Content Declare @Object as Int
Declare @ResponseText as Varchar(8000) Exec sp_OACreate 'MSXML2.XMLHTTP', @Object OUT;
Exec sp_OAMethod @Object, 'open', NULL, 'get',@ServiceUrl,'false'
Exec sp_OAMethod @Object, 'send'
Exec sp_OAMethod @Object, 'responseText', @ResponseText OUTPUT Select @ResponseText
Exec sp_OADestroy @Object
END --在对应表上创建 更新触发器,监控数据是否有变化,变化即刻通知应用程序
CREATE TRIGGER notify_trigger ON [dbo].[TestTable]
AFTER UPDATE
AS
BEGIN
/*
update触发器会在更新数据后,
将更新前的数据保存在deleted表中,更
新后的数据保存在inserted表中。
*/
DECLARE @UpdateID NVARCHAR(20)
DECLARE @UpdateContent Varchar(MAX)
set @UpdateID=(select Deleted.D_Id from Deleted)
set @UpdateContent=(select Inserted.D_Amount from Inserted) EXEC pro_NotifyApp @UpdateID, @UpdateContent
END
//mvc项目 http://localhost:789/home/GetNotify
public ActionResult GetNotify()
{
string id = Request["id"];
string message = Request["message"];
//插入数据
string txt = string.Empty;
var date = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
txt = string.Format("{0} ID:{1} Message:{2}", date, id, message);
FileStream fs = null;
StreamWriter sw = null;
try
{
string path = "D:\\111.txt";//文件的路径,保证文件存在。
fs = new FileStream(path, FileMode.Append);
sw = new StreamWriter(fs);
sw.WriteLine(txt);
}
catch (Exception)
{
throw;
}
finally
{
sw.Dispose();
sw.Close();
fs.Dispose();
fs.Close();
}
return null;
}
--测试
/*触发器两个虚拟表,inserted 保存的是 insert 或 update 之后所影响的记录形成的表,
deleted 保存的是 delete 或 update 之前所影响的记录形成的表。*/
UPDATE dbo.TestTable SET D_Amount=209 WHERE D_Id=5004

Sqlserver数据库 通过表触发器 实时通知应用程序的更多相关文章
- 如何查看SQLServer数据库每个表占用的空间大小?
如何查看SQLServer数据库每个表占用的空间大小? 创建存储过程: CREATE PROCEDURE [dbo].[sys_viewTableSpace]AS BEGIN SET NOCOUNT ...
- sqlServer数据库纵横表相互转化
sqlServer 数据库纵横表相互转化 一.纵表转横表: 1.纵表: 2.横表: 3. 代码: select Name as '姓名', end) as '语文', end) as '数学', e ...
- SqlServer数据库字典--表.视图.函数.存储过程.触发器.主键.外键.约束.规则.sql
SELECT DISTINCT TOP 100 PERCENT isnull(p.name,'') AS 父对象, o.xtype, CASE o.xtype WHEN 'C' ...
- sql-server数据库中利用触发器实现表与表之间的级联删除
create trigger Delete_Student --创建一个触发器 on student instead of delete as declare @sno varchar() selec ...
- MVC5+EF6简单实例---以原有SQLServer数据库两表联合查询为例
有二三年没写代码了,**内的工作就是这样,容易废人!看到园子里这么多大侠朝气蓬勃的,我想也要学点东西并和大家分享,共同进步!快乐每一天,进步每一天!言归正传! 通过最近一段时间对MVC5.EF6的学习 ...
- Oracle SQLserver数据库创建表ID字段的自动递增_序列
Oracle 将表t_uaer的字段ID设置为自增:(用序列sequence的方法来实现) ----创建表 Create table t_user( Id ),userid ),loginpasswo ...
- SqlServer 数据库/数据表 拆分(分布式)【转】
通过某种特定的条件,将存放在同一个数据库中的数据分散存放到多个数据库上,实现分布存储,通过路由规则路由访问特定的数据库,这样一来每次访问面对的就不是单台服务器了,而是N台服务器,这样就可以降低单台机器 ...
- Sqlserver 数据库、表常用查询操作
查询所有表以及记录数: select a.name as 表名,max(b.rows) as 记录条数 from sysobjects a ,sysindexes b where a.id=b.id ...
- SQL Server -----创建sqlserver 数据库 、表
新建数据库 1.右击 选择新建数据库 2.起一个名字 选择保存位置 3.放在之前建好的的文件夹中 点击确定 4.都要选择好 点击确定 5.确定之后如图 6.新建表 7.见一个表,常说的要满足三大 ...
随机推荐
- 编程零基础应当如何开始学习 Python?
提前说一下,这篇福利多多,别的不说,直接让你玩回最有手感的怀旧游戏,参数贴图很方便自己可以根据喜好修改哦. 本篇通过以下四块展开,提供大量资源对应. 选一个好版本 有没有看过<在下坂本,有何贵干 ...
- python re group()
python group() 正则表达式中,group()用来提出分组截获的字符串,()用来分组 import re a = "123abc456" print re.search ...
- MITNIK ATTACK
Https 443 http 80 TCP/IP 协议栈:将数据封装包头 传输层报头 Ack回复确认位 FIN结束位 SIN 开始位 RST 重置位 Seq 序号位 网络层报头 目的地址 原地址 报文 ...
- GUI(国际象棋棋盘)
package com.niit.javagui; import java.awt.BorderLayout; import java.awt.Color; import java.awt.GridB ...
- Swing-JCheckBox用法-入门
JCheckBox是Swing中的复选框.所谓复选框就是指,可以同时存在多个这样的控件,它们可以有多个处于被选中状态.对于每一个复选框而言,它只有选中和未选中两种状态. JCheckBox的常用方法如 ...
- 团队作业4——第一次项目冲刺(Alpha版本)5th day
一.Daily Scrum Meeting照片 二.燃尽图 三.项目进展 计时模式已经大致完成了 接下来是记录成绩的部分 四.困难与问题 1.新语言的学习与适应较慢,整体的开发进展达不到预期效果, 2 ...
- 201521123038 《Java程序设计》 第三周学习总结
201521123038 <Java程序设计> 第三周学习总结 1. 本周学习总结 附大图链接 http://naotu.baidu.com/file/5774caa2be710afbc0 ...
- 201521123004 《Java程序设计》第3周学习总结
1. 本周学习总结 (1)①使用构造函数(constructor) eg:Date now = new Date(); new Date(); //创建了一个Date对象 now是Date类型变量,存 ...
- Java课程设计—学生成绩管理系统(201521123002 林楚虹)
1. 团队课程设计博客链接 团队博客链接 2.个人责模块或任务说明 根据学生学号查找学生成绩 根据学生姓名(支持模糊匹配)查找学生成绩 用POI技术导出Excel文件 3.自己的代码提交记录截图 4. ...
- 201521123110《Java程序设计》第11周学习总结
1. 本周学习总结 2. 书面作业 1.互斥访问与同步访问 1.1 除了使用synchronized修饰方法实现互斥同步访问,还有什么办法实现互斥同步访问(请出现相关代码)? 1.2 同步代码块与同步 ...