如果发现变化了,数据库就被改动了.
市面上的软件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
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)