位置: 编程技术 - 正文
误区 #4: DDL触发器(SQL Server 之后被引入)就是INSTEAD OF触发器
这是错误的
DDL触发器的实现原理其实就是一个AFTER触发器。这个意思是先发生DDL操作,然后触发器再捕捉操作(当然如果你在触发器内写了Rollback,则也可能回滚)。
存在Rollback也意味着这个触发器并不像你想象的那么轻量,来看下面的例子:
ALTER TABLE MyBigTable ADD MyNewNonNullColumn VARCHAR () DEFAULT 'Paul'
如果存在一个defined for ALTER_TABLE事件的DDL触发器,或是一个更宽泛的事件比如DDL_TABLE_EVENTS。上面那个DDL代码将会对表中每一行数据加进新列,之后触发触发器操作。如果你的触发器中存在回滚来阻止DDL操作发生,那么这个代价可不小(不信的话你自己看看这么做后产生的日志)。
当然更好的办法是对ALTER设置GRANT或是DENY权限,或是仅仅允许通过你创建的存储过程进行DDL操作。
但不管怎么样,虽然DDL触发器可以达到禁止DDL的操作的目的,但代价昂贵。而DDL触发器的好处是允许记录某些人做了某些修改表之类的操作,所以我并不是说不允许DDL触发器,而是要小心使用。
Kimberly有一篇非常好的关于DDL触发器的博文:"EXECUTE AS" and an important update your DDL Triggers (for auditing or prevention)”。
推荐整理分享SQL Server误区30日谈 第4天 DDL触发器就是INSTEAD OF触发器(sql语句错误提示),希望有所帮助,仅作参考,欢迎阅读内容。
文章相关热门搜索词:sql server报错,sql语句错误提示,sql server报错,sql server 3417错误,sqlserver1053怎么解决,sql server 错误,sql语句错误提示,sql语句错误提示,内容如对您有帮助,希望把文章链接给更多的朋友!
浅谈SQL Server 对于内存的管理[图文] 理解SQLServer对于内存的管理是对于SQLServer问题处理和性能调优的基本,本篇文章讲述SQLServer对于内存管理的内存原理。二级存储(secondarystorage)对于计算
SQL Server误区日谈 第5天 AWE在位SQL SERVER中必须开启 误区#5:AWE在位SQLSERVER中必须开启错误!在坊间流传的有关AWE的设置的各种版本让人非常困惑。比如说如何设置起作用,如何设置不起作用,在位和
SQL Server误区日谈 第6天 有关NULL位图的三个误区 这样还能减少CPU缓存命中失效的问题(点击这个链接来查看CPU的缓存是如何工作的以及MESI协议)。下面让我们来揭穿三个有关NULL位图的普遍误区。误区#6a:
标签: sql语句错误提示
本文链接地址:https://www.jiuchutong.com/biancheng/347818.html 转载请保留说明!上一篇:SQL Server误区30日谈 第3天 即时文件初始化特性可以在SQL Server中开启和关闭(sql语句错误提示)
下一篇:浅谈SQL Server 对于内存的管理[图文](sql server使用心得)
友情链接: 武汉网站建设