SQL Server 2008 R2プロファイラを使用して、ColdFusion 7アプリケーション(他の誰かによって開発されたもの) SQL Server 2008 R2をバックエンドとして使用します。このアプリケーションはもともとMS Access 2003をバックエンドとして使用していましたが、後でSQL Server 2008 R2に変換されました。プロファイラはSCOPE_IDENTITY()を使用している次のSQLを表示していますが、検索ユーティリティを使用してアプリケーションのルートディレクトリを検索すると、SQLクエリのどこでもSCOPE_IDENTITY()関数が使用されます。このアプリケーション用のSQL Serverデータベースには、ストアドプロシージャ、ビュー、関数などはありません。すべてのSQLクエリは、ColdFusionファイル内に埋め込まれたクエリです。ColdFusionコードがクエリで使用していないときにSCOPE_IDENTITY()を表示するSQL Server Profiler
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にアップグレードされた、今私が持っているローカルマシン上でそれをデバッグしています:どこその後、プロファイラーはSCOPE_IDENTITY()関数を得ていますCF 11。CF 7をCF 8で置き換えた後にCF 9で置き換えたときにもコードがアップグレードされたのかどうかわかりません。 プロファイラで上記のSQLを生成していると思われるCFqueryのように見えます。また、テーブルProductItemsは、ID列を持っている、データベースには、任意のトリガを使用していない、とのcfqueryタグは、result属性を使用していない。
<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