我有一个从 Twitter 加载大量数据的应用程序。我们开始注意到一些性能问题,因此我为应用程序数据库设置了 SQL Profiler。我注意到以下 SQL 语句正在执行,但没有出现在我的代码中的任何位置。因此,我假设 SQL Server 2005 或 ColdFusion 8 出于某种原因添加了这些语句。
设置事务隔离级别已提交读
SET FMTONLY ON 从链接中选择标题,其中 1=2 SET FMTONLY OFF
exec [sys].sp_datatype_info_90 -9,@ODBCVer=4
EXEC sp_executesql N'setimplicit_transactions off select USER_NAME() select usertype,type,name from systypes where usertype>=257'
EXEC sp_execute 16,'iTunes Store'
exec sp_unprepare 28
- 我的代码中没有任何 cftransaction
- 我的所有查询都是从 cfqueries 运行的。 (无存储过程)
- 我从未在代码中的任何位置运行执行或执行语句
- 所有这些语句都是从专门为我的网络应用程序设置的数据库用户帐户运行的
- #5 和 #6 中的语句与许多不同的数字重复
- #5 中的语句被许多不同的字符串复制
为什么要添加这些语句,是否需要它们,如果不需要,我该如何阻止它们?
最佳答案
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
关于sql-server - ColdFusion 执行不需要的 SQL 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2245580/