SQL ServerManager2008。
最近、別のテーブルを参照するようにストアドプロシージャを変更しました。
それ以来、私は同じエラーを受け取り続けます:
「メッセージ245、レベル16、状態1、行1の変換は、varchar値「BC8018」をデータ型intに変換するときに失敗しました。」
ここで、クエリをルートに分割して、この問題が発生する場所を見つけ、新しいテーブルへのJOINで問題が発生していることを確認します。
ここで、テーブルで使用している唯一のフィールドImを比較しました。これは、ParetoとNewParetoの両方がintです。
コードは次のとおりです。
SELECT i.Acct,
i.Name,
i.Document,
i.Part,
i.Qty,
i.Unit,
dbo.PeriodInsert.NewPareto,
i.pg,
i.[DateTime],
i.BinSeqNo
FROM
OPENQUERY(SACBAUTO, 'SELECT dbo.iHeads.acct,
dbo.iHeads.name,
dbo.iLines.Document,
dbo.iLines.Part,
dbo.iLines.Pg,
dbo.iLines.Qty,
dbo.iLines.unit,
dbo.iHeads.[DateTime],
dbo.iLines.BinSeqNo
FROM Autopart.dbo.iheads INNER JOIN Autopart.dbo.iLines ON
Autopart.dbo.Iheads.document = autopart.dbo.iLines.document
WHERE dbo.iLines.Pg not in (''60'',''61'',''62'')
') i
left JOIN
dbo.PeriodInsert
ON
i.Part collate SQL_Latin1_General_CP1_CI_AS = dbo.PeriodInsert.NewPareto
WHERE
(i.[DateTime] BETWEEN '2012-03-01' AND '2012-08-23') AND
i.Acct = '1557'
これは元のストアドプロシージャの内訳ですが、ここでルートが発生することを覚えておいてください。奇妙だと思いますが、フィールドparetoを使用したNEWparetoという元のテーブルもintです。テーブルのせいで突然機能しなくなった理由はありますか?
さらに詳しい情報が必要な場合は、お知らせください。
どうもありがとう