0

多数のテーブルから文字列を作成し、それを返すストアド プロシージャを作成しました。SSMS から完全に機能します。SP は、正しい値が返されないサードパーティのソフトウェアから呼び出されます。

SP のポイントは、ファイルに加えられた変更のアセットタグを生成することです。SPは以下です

ALTER PROCEDURE [dbo].[usp_ACREpdflibTAG] -- ストアド プロシージャのパラメータをここに追加します @SJID INT AS BEGIN DECLARE @Asset VARCHAR(2000) SET ANSI_NULLS OFF

SELECT @Asset = COALESCE(@Asset, '') + { fn CONCAT(tPdfChanges.ShortHand, '=1,') } FROM tPdfChanges WHERE SubJobID = @SJID

DECLARE @AssetTag VARCHAR(4000)

SET @AssetTag = (SELECT 
'@@@AssetTagStart@@@' + 
@Asset
+ 'Desc=' + a.sName
+ ',UPC=' + h.sBarcodeStd
+ ',Cat=' + CAST(b.GACategoryID AS VARCHAR(10))
+ ',Type=' + CAST(d.GAProductTypeID AS VARCHAR(10))
+ ',PackFormat=' + CAST(f.GAPackTypeID AS VARCHAR(10))
+ ',DispDate=' + ISNULL(CONVERT ( varchar  , g.DCompleted ,105 ), '')
+ '@@@AssetTagEnd@@@'
FROM
tSubJob a   
WHERE
a.ID = @SJID)


select @AssetTag
END

テーブル名は私が働いているビジネスに敏感であるため、クエリからテーブル名を削除する必要がありました。

SSMS から実行すると、次が返されます。

@@@AssetTagStart@@@CutChg=1,DesChg=1,UPCChg=1,ProChg=1,IngChg=1,NutChg=1,StoreChg=1,CookChg=1,TtlChg=1,LegChg=1,AgyChg=1,WeightChg=1,CountryChg=1,ImpChg=1,OtherChg=1,Desc=Testing Triggers,UPC=,Cat=27,Type=3,PackFormat=38,DispDate=25-07-2012@@@AssetTagEnd@@@

サードパーティのソフトウェアがそれを実行すると、次が返されます。

@@@AssetTagStart@@@CutChg=1,Desc=Testing Triggers,UPC=,Cat=27,Type=3,PackFormat=38,DispDate=25-07-2012@@@AssetTagEnd@@@

ご覧のとおり、asset タグの最初の部分の 1 つの変更のみが一致しています。

プロファイラーを使用して何が起こっているかを確認しました.SSMSから実行するとRPCとして、サードパーティソフトウェアから実行するとSQLバッチクエリとして実行されます.

誰でも助けることができますか?

4

1 に答える 1

0

私はこれを自分で解決しました。プロファイラーでプロセス ID を調べ、さらに調べてみると、サードパーティ ソフトウェアが行数を 1 に設定していました。これをリセットすると、すべて完全に機能しました。

于 2012-07-26T09:46:13.787 に答える