13 September 2008

User "ROOT" does not have the CONNECT privilege

Problem:
DataStage job abort เนื่องจากไม่สามารถ connect DB2 ได้เพราะ user "ROOT" ไม่มีสิทธิ์ select table นั้นๆ ปัญหาคือว่า ทำไมใช้ root เข้าไป connects หล่ะ? ทั้งๆที่ใน DB2 stage ก็กำหนด userid ให้อ่านจาก parameter set (oper)


Error Message:
PrepareSKAR.db2_SG1_SK_AR,1: Error Idx = 1;
DB2Driver Embedded SQL message: SQL1060N  User "ROOT    " does not have the CONNECT privilege.  SQLSTATE=08004
;
sqlcode = -1060;
sqlstate = 08004
Cause:
DB2 ใช้ user ที่ปล่อยรัน job ในการ connect และ execute sql command !?!? ส่วน user ที่กำหนดใน DB2 stage นั้นใช้ในการ authenticate เท่านั้น... เป็นข้อควรระวังอย่างยิ่ง


Solution:
ควรใช้ user เดียวกันหมด ไม่ว่าจะเป็น user ระดับ OS ที่ใช้สำหรับ login เข้ามารัน job, user ระดับ DB2 ที่มีสิทธิ์เพียงพอในการทำงาน (select, insert, delete, update เป็นต้น) กับ table ที่เกี่ยวข้อง
คงต้องลองดูว่า db อื่นๆเป็นเหมือนกันหรือเปล่า หรือเป็นแค่ DB2 เท่านั้น

No comments: