月度归档:2017年11月

mssql 采用DDL(Data Definition Language) 触发器 制作数据库审计功能


DDL触发器简介(sql 2005后开始使用)

DDL触发器的功能主要是对 数据库的定义操作进行监控,如下所示:
用户修改 删除表
用户修改 删除数据库
用户对数据库对象的各种操作


DDL触发器由 create alter drop 能操作触发
DDL触发器支持 before after 操作



DDL触发器 审计举例

例:
当数据库中发生DROP TABLE或ALTER TABLE事件时,都会激发 DDL 触发器 triggTest。

 	
CREATE TRIGGER triggTest
ON DATABASE 
FOR DROP_TABLE, ALTER_TABLE 
AS 
   PRINT '禁止表删除' 
  /*插入sql 日志,可以作为sql审计功能使用*/
   ROLLBACK
;

c# 页面编写中 readonly disabled 区别及用法简介


readonly disabled 功能简介

readonly:主要应用于 text password textarea 文本框的只读属性设置,设置后文本框中就禁止录入数据
disabled:可以将表单中任意元素设置为不可用状态,设置不可用状态后,对象会被禁止操作


readonly disabled 区别简介

readonly:设置后,对象外观无变化
disabled:被设置后,对象外观默认会变为灰色


readonly:被设置后,text的值会随着表单一起提交至后台
disabled:被设置后, 对象的值不会提交至后台

mssql 表类型简介


表类型简介

mssql sql server数据库中,表类型分为
(聚集索引表和堆表)
聚集索引表:存在聚集索引的表,都称之为聚集索引表.
堆表:只要没有聚集索引,都称之为 堆表,(包括非聚集索引表)。



如何查看表类型

根据上面表类型简介,我们可以通过查看表是否包含聚集索引来判定表类型,具体脚本如下所示:

方法一:通过查询系统视图中的索引方式来鉴定表类型,脚本如下所示:

 SELECT
    OBJECT_NAME(a.object_id) [表名]
    ,CASE a.index_id
        WHEN 0 THEN '堆表'
        WHEN 1 THEN '聚集索引表'
    END [表类型]
FROM sys.partitions a
 right join sys.tables  b on  a.object_id = b.object_id and b.type='u'
 WHERE a.index_id < 2 
GROUP BY a.object_id,a.index_id

方式二:通过查询系统索引表中的索引类型,关联出相关表信息,来判定是否为堆表

 SELECT
    OBJECT_NAME(a.object_id) as  [表名],
      case a.type_desc
       when 'CLUSTERED' then '聚集索引表'
       when 'HEAP' then '堆表'
       else '' end as [表类型]
FROM sys.indexes a 
right join sys.tables b on  a.object_id= b.object_id and b.type='u'
WHERE index_id <2


各种表类型的应用场景

选择堆表的原因:
1 堆表无聚集索引,可减少磁盘空间占用 优点
2 堆表无聚集索引,无排序要求,数据插入快 优点

选择聚集索引表的原因:
1 数据存在排序,可减少某些特定字段的排序操作
2 当select 很多列时,索引列无法全部包含列信息时,可通过聚集索引查找,返回指定行信息,避免了全表扫描,加快了系统查询速度