我有一个从twitter加载大量数据的应用程序。我们已经开始注意到一些性能问题,因此我为应用程序数据库设置了SQL Profiler。我注意到以下SQL语句正在执行但不会出现在我的代码中的任何位置。因此,我假设SQL Server 2005或ColdFusion 8由于某种原因正在添加这些语句。
SET TRANSACTION ISOLATION LEVEL READ COMMITTED
SET FMTONLY ON select Title from Links where 1=2 SET FMTONLY OFF
exec [sys].sp_datatype_info_90 -9,@ODBCVer=4
EXEC sp_executesql N'set implicit_transactions off select USER_NAME() select usertype,type,name from systypes where usertype>=257'
EXEC sp_execute 16,'iTunes Store'
exec sp_unprepare 28
为什么要添加这些语句,是否需要,如果不是,我该如何阻止它们?
答案 0 :(得分:4)
1,2,3,4可以在“正常”ColdFusion代码中进行说明 - 假设您使用的是版本8或9.它会在后端执行各种各样的操作,以确保数据库服务器能够并准备好尽管可能没有在您的实际查询中明确调用它,但ColdFusion会自动返回作为CFQUERY一部分的信息。
http://www.forta.com/blog/index.cfm/2007/7/6/ColdFusion-8-Can-Return-Identity-Values
我不知道5和6在做什么。
此外,您使用的是Adobe提供的MS SQL驱动程序,还是使用的是MS JDBC SQL驱动程序?使用这两个驱动程序之间存在一些差异:
http://cfsearching.blogspot.com/2008/03/cf8-ms-jdbc-12-driver-and-for-my-next.html
答案 1 :(得分:2)
在分析器中看到的语句并没有异常,你实际上并没有明确地从代码中发送自己。
但这是关键点 - 你没有 明确 发送它们,但是由于你正在执行的操作/你是如何执行的,它们是隐式完成的做它们。
e.g。如果你在VB6中打开一个记录集然后迭代它,你会看到(例如)sp_cursor调用通过探查器 - 现在这些没有被代码显式调用,而是由于ADO通过连接记录集前进。
我希望我有某种意义