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.见一个表,常说的要满足三大 ...
随机推荐
- 【转】为什么选择Spring Boot作为微服务的入门级微框架
本文为普元云计算高级工程师许二虎在普元云计算架构设计群的微课堂分享.如需加入普元新一代数字化企业云平台研发设计群参与微课堂.架构设计与讨论直播,请直接回复此公众号:"加群 姓名 公司 职位 ...
- Java 多线程(一) 基础知识与概念
多线程Multi-Thread 基础 线程概念 线程就是程序中单独顺序的流控制. 线程本身不能运行,它只能用于程序中. 说明:线程是程序内的顺序控制流,只能使用分配给程序的资源和环境. 进程 进程:执 ...
- 遇到的面试题-sql
sql面试题(学生表_课程表_成绩表_教师表) 原帖链接:http://bbs.csdn.net/topics/280002741 表架构 Student(S#,Sname,Sage,Ssex) 学生 ...
- JSP小记
0.配置servlet的模板 1.找Jar文件:\Common\plugins (myeclipse.ini文件中查看) * com.genuitec.eclipse.wizards*.jar 2.找 ...
- Java语言课程设计——博客作业教学数据分析系统(201521123107 张翔)
#Java语言课程设计--博客作业教学数据分析系统(个人博客) 1.团队课程设计博客链接 [博客作业教学数据分析系统(From:网络五条狗)](http://www.cnblogs.com/fanta ...
- 【1414软工助教】团队作业3——需求改进&系统设计 得分榜
题目 团队作业3--需求改进&系统设计 作业提交情况情况 本次作业所有团队都按时提交作业. 往期成绩 个人作业1:四则运算控制台 结对项目1:GUI 个人作业2:案例分析 结对项目2:单元测试 ...
- 201521123013 《Java程序设计》第8周学习总结
1. 本章学习总结 2. 书面作业 Q1.List中指定元素的删除(题目4-1) 1.1 实验总结 while(list.contains(str)) list.remove(str); Q2.统计文 ...
- 201521123087《Java程序设计》 第八周学习总结
1. 本周学习总结 2. 书面作业 本次作业题集集合 List中指定元素的删除(题目4-1)1.1 实验总结 ...
- 201521123077 《Java程序设计》第7周学习总结
1. 本周学习总结 (图片来自网络) 可以看到,java的容器很多,这里讲一下这周经常用到的 ArrayList:用数组形式保存数据的容器,随机访问比较快,但是插入删除操作都比较耗时,会自动调整内部数 ...
- Project Euler:99 Largest exponential C++
Comparing two numbers written in index form like 211 and 37 is not difficult, as any calculator woul ...