我正在使用SQL Server 2008 R2 Profiler调试Windows 7上运行的ColdFusion 7应用程序 - 由其他人开发 - 的一个问题SQL Server 2008 R2作为后端。该应用程序最初使用MS Access 2003作为后端,后来被转换为SQL Server 2008 R2。分析器显示以下使用SCOPE_IDENTITY()的SQL,但在使用搜索实用程序搜索应用程序根目录时,没有文件在其SQL查询中的任何位置使用SCOPE_IDENTITY()函数。该应用程序的SQL Server数据库没有任何存储过程,视图,函数等。所有的SQL查询都是嵌入到ColdFusion文件中的查询。凡则探查越来越SCOPE_IDENTITY()函数:SQL Server Profiler显示SCOPE_IDENTITY(),而ColdFusion代码没有在任何查询中使用
declare @p1 int
set @p1=11
exec sp_prepexec @p1 output,N'@P1 datetimeoffset,@P2 varchar(8000),@P3 int,@P4 varchar(8000)',N'insert into ProductItems (item_date , item_description, item_type)
values (
@P1 ,
@P2 ,
@P3 ,
) select SCOPE_IDENTITY()','2015-10-19 00:00:00 +00:00','Test description',1
select @p1
UPDATE 虽然最初的应用是在CF 7开发的CF 7,后来升级为CF9,现在我调试它具有本地机器上CF 11.我不知道当CF 7被CF 8替换为CF 9时代码是否也升级了。 似乎在分析器中生成上述SQL的CFquery看起来像。此外,该表ProductItems确实有一个标识列,数据库没有使用任何触发器和CFQUERY标签不使用结果属性:
<cfquery name="addProductItems" datasource="#dtsource#">
insert into Productitems (item_date,item_description,item_type)
values (
<cfqueryPARAM value = "#item_dat#" CFSQLType = "CF_SQL_TIMESTAMP" null="#item_dat eq '-1'#">,
<cfqueryPARAM value = "#item_description#" CFSQLType = "CF_SQL_VARCHAR">,
<cfqueryPARAM value = "#item_type#" CFSQLType = "CF_SQL_INTEGER">
)
</cfquery>
上面的INSERT的实际CF代码是什么? – Leigh