SSIS getdate ลงในคอลัมน์ DateTimeOffset - ค่าข้อมูลล้นประเภท

ฉันมีแพ็คเกจ SSIS แหล่งที่มาคือแบบสอบถาม SQL จุดหมายคือโต๊ะ แพ็คเกจใช้งานได้จนกระทั่งฉันเปลี่ยนคอลัมน์ในตารางปลายทางจาก datetime เป็น datetimeoffset(0)

ขณะนี้ ระเบียนทั้งหมดล้มเหลวด้วยข้อผิดพลาด "การแปลงล้มเหลวเนื่องจากค่าข้อมูลล้นประเภทที่ผู้ให้บริการใช้" ในคอลัมน์นี้โดยเฉพาะ

ค่าในการสืบค้นแหล่งที่มาคือ getdate() ฉันลอง TODATETIMEOFFSET(getdate(),'-05:00') ไม่สำเร็จ

ที่จริงแล้ว สิ่งเดียวที่ได้ผลคือฮาร์ดโค้ดต่อไปนี้ลงในซอร์สคิวรี:

cast('3/14/12' as datetime)

ข้อมูลที่น่าสนใจอื่นๆ เพียงอย่างเดียวคือ แพ็คเกจทำงานได้ดีเมื่อเรียกใช้การสืบค้นต้นทางกับเซิร์ฟเวอร์อื่น ซึ่งหมายความว่าอาจมีการตั้งค่าที่เกี่ยวข้อง แต่ฉันไม่เห็นความแตกต่างที่ชัดเจนระหว่างเซิร์ฟเวอร์ทั้งสอง


person Mayo    schedule 14.03.2012    source แหล่งที่มา
comment
ฉันมีปัญหาที่คล้ายกันและพบว่าการทำสิ่งที่แสดงไว้ที่นี่ช่วยได้: social.msdn.microsoft.com/Forums/en/sqlintegrationservices/ ฉันสร้างรูปแบบที่ชัดเจนเพื่อใช้ในคอลัมน์ที่ได้รับ เจ็บปวดที่ต้องทำ แต่ดูเหมือนว่ามีบางสิ่งแปลก ๆ เกิดขึ้นใน SSIS พร้อมองค์ประกอบ dateTime   -  person wergeld    schedule 14.03.2012
comment
ประเภทข้อมูลของคอลัมน์ในโฟลว์ข้อมูลคืออะไร คลิกขวาที่เส้นทางออกจากแบบสอบถามต้นฉบับ และเลือกข้อมูลเมตา   -  person billinkc    schedule 14.03.2012


คำตอบ (2)


ฉันจะแนะนำให้เพิ่ม "องค์ประกอบการแปลงข้อมูล" เพื่อจัดการกับมัน แต่เนื่องจากคุณเปลี่ยนเฉพาะที่ปลายทางเท่านั้น หมายความว่าคุณสามารถเปลี่ยนการสืบค้นแหล่งที่มาของคุณได้:

select cast(YOUR_DATE_COLUMN as datetimeoffset(0))
person Diego    schedule 14.03.2012
comment
ในที่สุดเราก็ตัดสินใจเรื่องนี้ได้ ฉันพบว่าความแม่นยำของแหล่งที่มาสูงเกินไปด้วย getdate() - ถ้าฉันฮาร์ดโค้ดค่าด้วยมิลลิวินาที มันก็ล้มเหลวเช่นกัน ยังไม่แน่ใจว่าเหตุใดวิธีการเก่าจึงใช้งานได้บนเซิร์ฟเวอร์เครื่องหนึ่งและไม่ใช่เซิร์ฟเวอร์อื่น - แต่การส่งไปที่ datetimeoffset(0) อย่างชัดเจน - person Mayo; 14.03.2012

ในกรณีที่ใครก็ตามกำลังมองหา เราพบวิธีแก้ปัญหาอื่นที่ใช้งานได้หากแหล่งที่มาอยู่ใน SQL 2005 (ไม่รองรับ datetimeoffset)

select dateAdd(minute,datediff(minute,0,getutcdate()),0)

ความตั้งใจคือการลดความแม่นยำ จริงอยู่ที่ว่าฉันเสียเวลาไม่กี่วินาทีเช่นกัน แต่ถ้าฉันลองบรรทัดด้านบนโดยใช้เวลาไม่กี่วินาที ฉันจะได้รับข้อผิดพลาดล้น

person Mayo    schedule 27.03.2012