一个C#控制台程序,要监控一个数据库(SQL Server)的数据变化,只要数据库有数据变化就要通知到程序?

一个C#控制台程序,要监控一个数据库(SQL Server)的数据变化,只要数据库有数据变化就要通知到程序?,第1张

数据库的mdf文件和ldf文件做md5校验,然后轮询文件md5值的变化.

如果发现变化了,数据库就被改动了.

市面上的软件double take应该就是这种感觉,不过,手段一定更高级的.

思路还不错吧.

第一种方案:利用SqlDependency类,不过这个刚好是针对你2005的,你可以考虑尝试使用这个才实现监听数据库变化。

第二种方案:自己手工添加触发器来进行实现监听功能。

第三种方案:数据表轮询,不过个人是不建议你用此方法,太耗资源了一点。

创建表,存储每天的表空间占用情况

CREATE TABLE [dbo].[t_rpt_table_spaceinfo](

[table_name] [sysname] NOT NULL,

[record_date] [date] NOT NULL,

[record_time] [time](7) NOT NULL,

[rows_count] [bigint] NULL,

[reserved] [bigint] NULL,

[data_size] [bigint] NULL,

[index_size] [bigint] NULL,

[unused] [bigint] NULL,

CONSTRAINT [PK_t_rpt_table_spaceinfo] PRIMARY KEY CLUSTERED

(

[table_name] ASC,

[record_date] ASC,

[record_time] ASC

)

)

2. 新建作业

新建作业,作业计划每天凌晨运行一次,每天记录表占用的空间情况,存储到上一步建立的表中

作业中执行的T-SQL代码为:

SET NOCOUNT ON

/*创建临时表,存放用户表的空间及数据行数信息*/

CREATE TABLE #tablespaceinfo

(

nameinfo VARCHAR(500) ,

rowsinfo BIGINT ,

reserved VARCHAR(20) ,

datainfo VARCHAR(20) ,

index_size VARCHAR(20) ,

unused VARCHAR(20)

)

DECLARE @tablename VARCHAR(255)

/*使用游标,循环得到表空间使用情况*/

DECLARE Info_cursor CURSOR


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/10645385.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-10
下一篇 2023-05-10

发表评论

登录后才能评论

评论列表(0条)

保存