PDA

View Full Version : Vụ này hài: SQL statement chạy trong QA nhưng không chạy trong DTS package



tamtaonline
03-10-2007, 10:01
Chào các bác,

Mỗi đêm em có nhiều jobs chạy trong SQL Server Agent
Mỗi sáng em muốn biết tình trạng của các job này, nên em lấy thông tin từ msdb.sysjobhistory để xem. Tuy nhiên 2 fields run_time và run_duration lại không lưu giá trị theo dạng datetime nên em phải convert sang datetime như thế này


select T1.instance_id, T1.run_date, T2.job_id, T2.name, T1.step_id, T1.step_name, T1.run_time, T1.run_duration, T1.run_status,
convert(datetime, STUFF(STUFF(RIGHT('000000'+ CONVERT(VARCHAR(8), run_time), 6), 5, 0, ':'), 3, 0, ':')) as start_time,
convert(datetime, STUFF(STUFF(RIGHT('000000'+ CONVERT(VARCHAR(8), run_duration), 6), 5, 0, ':'), 3, 0, ':')) as duration,
(convert(datetime, STUFF(STUFF(RIGHT('000000'+ CONVERT(VARCHAR(8), run_time), 6), 5, 0, ':'), 3, 0, ':'))) +
(convert(datetime, STUFF(STUFF(RIGHT('000000'+ CONVERT(VARCHAR(8), run_duration), 6), 5, 0, ':'), 3, 0, ':'))) as EndTime
from msdb.dbo.sysjobhistory T1
inner join msdb.dbo.sysjobs T2
on T1.job_id = T2.job_id

Cái này chạy tốt trong Query Analyzer, nhưng khi em tạo 1 DTS package để lưu kết quả vào 1 bảng history thì nó báo lỗi:

Khi paste code trên vào "Transform data task properties", nhấn 'Parse' thì nó OK nhưng nhấn 'Preview' thì nó báo "no rowset was returned from the SQL statement"

:lick: hài ghê! có bác nào gặp trường hợp tương tự thì chia sẻ kinh nghiệm với!

Xin cảm ơn

PS: có google ra được vài trường hợp tương tự nhưng không có cái nào giống y chang.

tamtaonline
03-10-2007, 13:02
Em đã sửa được lỗi ở trên, có lẽ nó là do cái statement 'use myuserdb' do em add thêm vào chỗ "Transform data task properties." Remove nó đi thì không sao :)
Thanks anyway