sql-server - SQL Server Profiler 显示 SCOPE_IDENTITY(),而 ColdFusion 代码未在任何查询中使用它

标签 sql-server coldfusion sql-server-2008-r2 sql-server-profiler scope-identity

我正在使用 SQL Server 2008 R2 Profiler 调试 ColdFusion 7 应用程序(由其他人开发)上的问题,该应用程序在 Windows 7 上运行,并以 SQL Server 2008 R2 作为后端。该应用程序最初使用 MS Access 2003 作为后端,后来转换为 SQL Server 2008 R2。探查器显示以下使用 SCOPE_IDENTITY() 的 SQL,但是当我使用搜索实用程序搜索应用程序根目录时,没有文件在其 SQL 查询中的任何位置使用 SCOPE_IDENTITY() 函数。该应用程序的 SQL Server 数据库没有任何存储过程、 View 、函数等。所有 SQL 查询都是 ColdFusion 文件中的嵌入查询。 Profiler 在哪里获取 SCOPE_IDENTITY() 函数:

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

更新 虽然最初该应用程序是在CF 7中开发的,但是CF 7后来升级到了CF9,现在我正在具有CF 11的本地机器上调试它。我不知道当CF 7替换为CF时代码是否也升级了8,然后使用 CF 9。 CFquery 似乎在分析器中生成上述 SQL 的样子。此外,表 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>

最佳答案

我的猜测是 CF 服务器会自动添加它。我知道您说过您正在使用 MX7,但是……回到 ColdFusion 8,引入了一项新功能,可以从简单的 INSERT 语句中检索生成的 ID。在 SQL Server 中,这是通过将 SELECT SCOPE_IDENTITY() 附加到 INSERT 查询来完成的。这在当时确实造成了一些问题。更多详情请参见:

注意:在以后的版本中,实现可能会发生变化。

beloitdavisja mentioned in the comments ,查找具有 result 属性的 cfquery 标记。 Result 是一个包含有关所执行查询的详细信息的结构。在CF8中,生成的记录ID在IDENTITYCOL键下返回。在更高版本中,它还包含与数据库无关的版本,GENERATEDKEY

关于sql-server - SQL Server Profiler 显示 SCOPE_IDENTITY(),而 ColdFusion 代码未在任何查询中使用它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33242714/

相关文章:

sql-server - 无法连接到 SQL Server 2008 - 看起来像是共享内存问题

java - 插入查询 - executeUpdate 返回 -1

coldfusion - 使用 webhooks 和 Coldfusion 的 Twilio 入站 SMS

postgresql - SSIS:SQL server 2008 R2 到 PostgreSQL 9.5 之间的数据集成

c# - 从 CSV 文件同步数据库

php - 如何解决加载模块时出现此错误大型 joomla 数据库网站的 MySQL 服务器已消失

SQL:在 varchar 字符串中插入换行符

coldfusion - 1 个域,2 个 session

pdf - 如何使用 cfpdfform 在 PDF 中嵌入图像

sql - 在 T-SQL 中查找最大时间重叠