私はVB6
自分の仕事で古いプログラムをデバッグしようとしています。それはバグとハードコードされたものでいっぱいです。
プログラムはSQLServer2005データベースに接続して、ストアドプロシージャを使用して情報を読み書きします。
作業中はプログラムがまだ使用されているため、データベースのバックアップを作成していくつかのことをテストし、SQLServer2008のバージョンで復元しました。すべてが正常に機能していました。
翌朝来たとき、夜はプログラムを使わなかったのに、前夜はなかったというエラーが出ました。
問題 :
"exec dbo.sp_Get_Wait_Data '" & DateEx & "'"
DateEx
を含む文字列です"2012/06/14"
ストアドプロシージャ:
[sp_Get_Wait_Data] @Datest as char(10)
AS
SELECT
(A lot of column names here)
FROM
Fiche
LEFT JOIN
voyage ON fcid = vofiche
LEFT JOIN
client on fcaccount = cusnov
WHERE
fcdate = @Datest
AND (void is null or (void > 0 and (void <> 999 and void <> 1000 and void <> 998)))
AND ((fcremarques NOT LIKE '%SYSANNULATION%' OR
fcremarques IS NULL)
AND fcrettime IS NOT NULL)
ORDER BY
FcTime, FcOrgSite, fcdessite
エラーメッセージ:
varcharデータ型をsmalldatetimeデータ型に変換すると、範囲外の値になりました
したがって、エラーはfcdate=@Datest
ストアドプロシージャにあります。ストアドプロシージャにこの行を追加してみました
SELECT convert(datetime, @Datest, 120)
これはクエリ内の変換の魅力のように機能しましたが、他のクエリがこの変数にアクセスしようとしたときにプログラム内で数百の他のエラーを引き起こしたため、オプションではありません。
このクエリが昨日完全に機能していて、今はこのエラーが発生している理由はありますか?前もって感謝します。