Archive

SSIS


ถ้าเรามีไฟล์ที่ถูกระบบอีกระบบ gen มาแล้วเราต้องไปกด download บน website ทุกวัน
เราจะทำมันให้ง่ายขึ้น ได้ไม่ต้องเป็นสาวโรงงาน

1. สร้าง connection สำหรับ connection ไปยังเว็บไซด์ผ่าน http
NewConnection

2. เลือก type เป็น http นะแจ๊ะ
HTTP

3. กำหนดค่า url ที่เราจะไปเอา download file และกำหนด credentials ไปด้วยถ้ามีการกำหนดสิทธิ์ของการ access website ไว้
แต่ถ้ามี policy เรื่องการเปลี่ยน password บ่อยๆ แล้วละก็ใช้ expression ส่งค่า password ผ่านตัวแปรมาละกัน
configHTTP

4. สร้าง file connection สำหรับใช้ save file เวลาทำการ download อย่าลืมตั้งชื่อให้ control ด้วย อันนี้ตั้งชื่อว่า savefilezip ละกัน เป็นการกำหนดด้วยว่าจะ save file ไปไว้ path ไหน
NewFileConnection

5. ลาก script task มาวางและกด edit script
นำ code นี้ไปแปะไว้ใน main() เป็นอันเสร็จพิธี

try
{
Object mySSISConnection = Dts.Connections[“HTTP Connection Manager”].AcquireConnection(null);
HttpClientConnection myConnection = new HttpClientConnection(mySSISConnection);
myConnection.DownloadFile(Dts.Connections[“savefilezip”].ConnectionString, true);
Dts.TaskResult = (int)ScriptResults.Success;
}
catch(Exception ex)
{
Dts.Events.FireError(0, “Download File”, “Download failed: ” + ex.Message, string.Empty, 0);
Dts.TaskResult = (int)ScriptResults.Failure;
}

code
การทำการงานของ code ก็สร้าง connection ไปที่ http ด้วย Class HttpClientConnection และใช้ function DownloadFile โดย parameter ที่ใส่ชื่อ File Connection ที่เราสร้างเอาไว้นั่นเองงงงงง มาเลิกเป็นสาวโรงงานกัน

Advertisements

ปกติเราสามารถทำการ Log การ execute package ของ SSIS ได้ โดยเราทำการ click right ที่ package แล้วเลือก Logging

Image

 

โดยจะมี provider type ให้เลือกใช้งานหลายรูปแบบด้วยกัน โดยที่ default ของ Provider จะเป็น windows event log

แต่ topic นี้เราจะมาลองใช้ provider type ที่เป็น SQL Server ดู

Image

 

หลังจากกด add ก็ทำการเลือก config connection ที่มี ซึ่งในตัวอย่างนี้ มี connection ที่ใช้ในการ ETL อยู่แล้ว

 

 

 

Image

 

ต่อไปดูมากำหนดค่าที่เราต้องการบันทึก โดยไปที่ tab details จะมี Event ให้เราเลือกว่าเราต้องการ Log event อะไรบ้าง

โดย ผมเลือก OnPreExecute , OnPostExecute

ซึ่งเราสามารถเลือก Advance เพื่อจะกำหนดรายละเอียดแต่ละ Event ต้องการจะบันทึกอะไรบ้าง

 

 

Image

 

โดย package นั้นจะใช้งาน stored procedure “dbo.sp_ssis_addlogentry” ในการบันทึก log ลงตาราง

“sysssislog” ภายใน database connection ที่เราทำการเลือกไว้แต่จะอยู่ภายใต้ “System Tables”

 

 

 

ImageImage

ตัวอย่างข้อมูลที่บันทึกลง sysssislog

Image


Cast string to numeric

syntax  :  (DT_NUMERIC,<<precision>>,<<scale>>)

example : (DT_NUMERIC,18,2)SUBSTRING(LogDetail,17,8)

Cast number to string

syntax : (DT_STR,<<length>>,<<code_page>>)

example : (DT_STR,8,874)TransactionDate

Cast string to date (TransactionDate variable type string)

syntax : (DT_DATE)

example : (DT_DATE)TransactionDate

you can look cast possible type in folder tree ‘Type Casts’

Image

Image