如何防止SQL Server事件探查器跟踪?
2010-10-21 04:25:56 来源:WEB开发网SQL事件探查器是SQL Server提供的一个图形工具,通过该工具主要可以实现如下功能:
1、监视SQL Server实例的性能。
2、调试Transact-SQL语句和存储过程。
3、识别执行慢的查询。
4、在工程开发阶段,通过单步执行语句测试SQL语句和存储过程,以确认代码按预期运行。
5、通过捕捉生产系统中的事件并在测试系统中重播它们来解决SQL Server中的问题。这对测试和调试很有用,并使得用户可以不受干扰地继续使用生产系统。
6、审核和复查在SQL Server实例中发生的活动。这使得安全管理员得以复查任何的审核事件,包括登录尝试的成功与失败,以及访问语句和对象的权限成功与失败。
需要注意的是:运行SQL 事件探查器时,必须确保系统至少有10MB的可用空间,否则SQL 事件探查器的所有功能都将停止。
我们可以看到这个SQL的事件探查器的确很强大,SQL Server里面的执行的每一个动作,都可以在SQL事件探查器里看的一清二楚,这对于性能调剂,后期维护等等都是有非常大的帮助的。但是,问题也就来了,在你的软件开发完毕后,作为软件的开发方而言并不希望使用软件的使用者通过SQL事件探查器来跟踪SQL语句。那么这种情况该怎么办呢?有没有什么办法不能让SQL事件探查器跟踪到呢?
下面我们来探索这个问题:
假设你数据库里面有一张表:Organization,里面有一个字段是password,那么当你执行下面的SQL语句的时候:
SELECT [Password] FROM [Organization]
那么你会吃惊的发现,在SQL事件探查器里面显示如下内容:
— 在该事件文本中找到“password”。
— 出于安全原因,已用该注释替换此文本。
这样,就看不到你执行的SQL语句的内容了。
但是,你可以会说,如果在我的Organization里面没有password字段的话还不是要显示出来?确认如此,但是官方介绍说:只要在查询的过程中,任意地方出现关键词:password,encryption,sp_setapprole之一,整个查询过程都将被隐藏,任意地方,当然也包括注释中。例如执行下面的语句:
--Password /*保护SQL语句*/ SELECT 1 FROM [Organization1]
同样的我们在SQl事件探查器里面看到的是:
总结:
这样就很清楚的明白:如果要避免SQL语句在SQL事件探查器里面被跟踪的话,只需要添加一个关键词的注释就可以把SQL语句保护起来了。
可喜的是,我开发的系统所依赖的第三方系统软件并没有对此SQL语句做保护,故可以通过SQL事件探查器分析软件对数据库进行了那些操作,进一步分析数据库表的结构。
可以想象一下如果软件中的SQL语句都做了保护的话,如果只能过产品或者发布好的软件要来分析数据库表的结构是何等的困难?
- ››SQL Server 2008 R2 下如何清理数据库日志文件
- ››SQL Server 2005和SQL Server 2000数据的相互导入...
- ››sql server 2008 在安装了活动目录以后无法启动服...
- ››sql server自动生成批量执行SQL脚本的批处理
- ››sql server 2008亿万数据性能优化
- ››SQL Server 2008清空数据库日志方法
- ››SQL SERVER无法安装成功,sqlstp.log文件提示[未发...
- ››Sql Server中通过父记录查找出所有关联的子记录
- ››SQL Server 中的事务(含义,属性,管理)
- ››Sql server 2005拒绝了对对象 'xx表' (数...
- ››Sql server 2005拒绝了对对象 'xx表' (数...
- ››Sql server 2005拒绝了对对象 'xx表' (数...
更多精彩
赞助商链接