执行SELECT语句时出现Audit Logoin和Audit Logout是何原因

xx1204 2007-07-26 09:38:21
请各位赐教!!郁闷了好几天[汗]
环境:D6+SQL Server2000+TADOQuery
数据表说明:Field1和Field2是主健,在Field1是聚集索引字段
在执行
with qryTest do
begin
Sql.Text:='Select Field1, Field2, Sum(Field3) from test where field1=''AA'' AND Field2=''xx'' group by field1, field2 ';
open;
end;时,在事件探查里发现在执行完
exec sp_prepexec @P1 output, NULL, N'Select Field1, Field2, Sum(Field3) from test where field1=''AA'' AND Field2=''xx'' group by field1, field2
后还有
4、Audit Login -- ?为什么?客户请求一个与运行 SQL Server的服务器的连接
5、SET NO_BROWSETABLE ON --?怎么会有锁表的操作??
6、declare @P1 int set @P1=1 exec sp_prepare @P1 output, NULL, N'SELECT * FROM test', 1 select @P1 --??
7、Audit Logout -- CPU高达62016 为什么会发生新的断开连接事件
8、Audit Login -- ??
9、exec [TEST]..sp_primary_keys_rowset N'test', NULL
10、Audit Logout -- CPU高达62016
=======
当把SQL语句换成
'Select Field1, Field2, Sum(Field3) from test(NoLock) where field1=''AA'' AND Field2=''xx'' group by field1, field2 ';
时,后面的4~10步就不会出现,速度大大的提高,是何原因呀?一个SELECT语句怎么会锁表呢?加上(NoLock)有什么影响吗?怎么又会发生4~10步的事件呢??
...全文
405 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
xx1204 2007-07-27
  • 打赏
  • 举报
回复
期待高人们的解答 :(
logne 2007-07-26
  • 打赏
  • 举报
回复
sqlserver帮助
NOLOCK:不要发出共享锁,并且不要提供排它锁。当此选项生效时,可能会读取未提交的事务或一组在读取中间回滚的页面。有可能发生脏读。仅应用于 SELECT 语句。

如果表(包括系统表)中包含计算列,而这些计算列由访问其它表中的列的表达式或函数计算而得,则不在那些表上使用表提示(不传播表提示)。例如,在查询中的表上指定 NOLOCK 表提示。该表包含由访问另一表中的列的表达式和函数组合计算到的计算列。这些由表达式和函数引用的表在被访问时并不使用 NOLOCK 表提示。

xx1204 2007-07-26
  • 打赏
  • 举报
回复
谢谢logne() !

我是看到有SET NO_BROWSETABLE ON才查的SQL Server帮助,用的NOLOCK,只是还不是很理解,以前没用过,不知道改成这样有什么影响??

是因为有SUM()函数,SQL Server才自动锁表吗?可为什么会有exec [TEST]..sp_primary_keys_rowset N'test', NULL和exec [TEST]..sp_indexes_rowset N'test', NULL, NULL两句,获取表的主健列和索引列有什么用呢??又为什么会断开连接呢?

2,507

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧