Hello colleagues!
Following my question in Project Server forum in this thread https://social.technet.microsoft.com/Forums/en-US/e3167ffc-f7f0-43ac-90a7-a01c7c7db270/project-server-2019-submitted-but-not-approved-workhours I got error
String orbinary data would be truncated.
in this my script
--------------------------------------------------------------------------------------------------------
-- DECLARE TABLES
--------------------------------------------------------------------------------------------------------
DECLARE @DataBegin DATETIME, @DataEnd DATETIME
DECLARE @t TABLE (ASSN_TRANS_UID UNIQUEIDENTIFIER, ASSN_TRANS_ACTION_ENUM INT)
DECLARE @m TABLE (ASSN_UID UNIQUEIDENTIFIER, RES_SAVED_DATE INT, h FLOAT, ASSN_TRANS_SUBMIT_DATE DATE, ASSN_TRANS_ACTION_ENUM INT)
DECLARE @fin TABLE (ASSN_UID UNIQUEIDENTIFIER, RES_SAVED_DATE DATE, h FLOAT, ASSN_TRANS_SUBMIT_DATE DATE, TASK_UID UNIQUEIDENTIFIER, PROJ_UID UNIQUEIDENTIFIER, RES_UID UNIQUEIDENTIFIER)
DECLARE @report TABLE (AssignmentUID UNIQUEIDENTIFIER, TimeByDay DATE, ProjectUID UNIQUEIDENTIFIER, TaskUID UNIQUEIDENTIFIER, AssignmentActualWork FLOAT, ResourceUID UNIQUEIDENTIFIER)
DECLARE @upselect TABLE (ASSN_UID UNIQUEIDENTIFIER, RES_SAVED_DATE DATE, TASK_UID UNIQUEIDENTIFIER, PROJ_UID UNIQUEIDENTIFIER, RES_UID UNIQUEIDENTIFIER)
DECLARE @tasksel TABLE (ASSN_UID UNIQUEIDENTIFIER, TASK_NAME VARCHAR)
SET DATEFORMAT dmy
SET @DataBegin = '07-07-2020'
SET @DataEnd = '21-07-2020'
--------------------------------------------------------------------------------------------------------
-- COLLECTING SUBMITTED DATA
--------------------------------------------------------------------------------------------------------
INSERT @t
SELECT
at.ASSN_TRANS_UID,
at.ASSN_TRANS_ACTION_ENUM
FROM
(SELECT
ASSN_UID,
ASSN_TRANS_UID,
ASSN_TRANS_ACTION_ENUM
FROM
pjpub.MSP_ASSIGNMENT_TRANSACTIONS
WHERE
(1=1)
-- AND
-- ASSN_TRANS_STATE_ENUM LIKE 0 -- 0 - task update
-- 1 - request rejection
-- 2 - create task
-- 3 - re-assign
-- 4 - create assing
-- 5 - re-assign to team
-- 6 - delete task
-- 7 - delete assigned
) AS at
INNER JOIN
(SELECT
ISNULL(ass.ASSN_UID, a.ASSN_UID) [ASSN_UID]
FROM
pjpub.MSP_ASSIGNMENTS_SAVED ass
FULL JOIN
pjpub.MSP_ASSIGNMENTS a
ON
(ass.ASSN_UID = a.ASSN_UID)
WHERE
ISNULL(ass.ASSN_FINISH_DATE, a.ASSN_FINISH_DATE) >= @DataBegin
AND
ISNULL(ass.ASSN_START_DATE, a.ASSN_START_DATE) < @DataEnd+1
) AS tm
ON
at.ASSN_UID = tm.ASSN_UID
--------------------------------------------------------------------------------------------------------
-- SENDING DATA TO THE FUNCTION
--------------------------------------------------------------------------------------------------------
INSERT @m
SELECT
f.*, t.ASSN_TRANS_ACTION_ENUM -- in results: 0 - submitted
-- 1 - approved
-- 2 - rejected
FROM
@t t CROSS APPLY dbo.SPK_ASSN_CHANGE_DATA (t.ASSN_TRANS_UID) f
WHERE
t.ASSN_TRANS_ACTION_ENUM IN ('0', '1')
--------------------------------------------------------------------------------------------------------
-- CONVERTING RES_SAVED_DATE
--------------------------------------------------------------------------------------------------------
INSERT @fin
SELECT
tfin.ASSN_UID,
DATEADD(dd,RES_SAVED_DATE, '19831231') AS RES_SAVED_DATE,
h AS h,
ASSN_TRANS_SUBMIT_DATE,
SaveTable.TASK_UID,
PROJ_UID,
RES_UID
FROM
@m tfin
LEFT JOIN
pjpub.MSP_ASSIGNMENTS_SAVED SaveTable
ON
tfin.ASSN_UID = SaveTable.ASSN_UID
WHERE
RES_SAVED_DATE >= DATEDIFF (DD,'19831231', @DataBegin)
AND
RES_SAVED_DATE <= DATEDIFF (DD,'19831231', @DataEnd)
--------------------------------------------------------------------------------------------------------
-- PREPARING REPORTING DATA
--------------------------------------------------------------------------------------------------------
INSERT @report
SELECT
AssView.AssignmentUID AS AssignmentUID,
AssView.TimeByDay AS TimeByDay,
ProjView.ProjectUID AS ProjectUID,
TaskView.TaskUID AS TaskUID,
AssignmentActualWork = SUM(AssView.AssignmentActualWork),
ResView.ResourceUID AS ResourceUID
FROM
dbo.MSP_EpmAssignmentByDay_Reports_UserView AssView
LEFT JOIN
pjrep.MSP_EpmAssignment AssTable
ON
AssView.AssignmentUID = AssTable.AssignmentUID
LEFT JOIN
dbo.MSP_CustomViewReports_EpmResource_UserView ResView
ON
AssTable.ResourceUID = ResView.ResourceUID
LEFT JOIN
dbo.MSP_CustomViewReports_EpmProject_UserView ProjView
ON
AssTable.ProjectUID = ProjView.ProjectUID
LEFT JOIN
dbo.MSP_CustomViewReports_EpmTask_UserView TaskView
ON
AssTable.TaskUID = TaskView.TaskUID
WHERE
(1 = 1)
-- AND
-- ResourceName IN ('Shuklin Roman')
AND
(TimeByDay > @DataBegin AND TimeByDay < @DataEnd)
AND
(AssView.AssignmentActualWork > 0.0)
GROUP BY
AssView.AssignmentUID,
AssView.TimeByDay,
ResView.ResourceUID,
ProjView.ProjectUID,
TaskView.TaskUID
--------------------------------------------------------------------------------------------------------
-- UNION ALL PUB AND REP UIDS
--------------------------------------------------------------------------------------------------------
INSERT @upselect
SELECT
ASSN_UID,
RES_SAVED_DATE,
TASK_UID,
PROJ_UID,
RES_UID
FROM
@fin
UNION
ALL
SELECT
AssignmentUID,
TimeByDay,
TaskUID,
ProjectUID,
ResourceUID
FROM
@report
--------------------------------------------------------------------------------------------------------
-- GETTING TASKS
--------------------------------------------------------------------------------------------------------
INSERT @tasksel
SELECT
ASSN_UID,
TASK_NAME
FROM
pjpub.MSP_ASSIGNMENTS_SAVED
UNION
ALL
SELECT
AssignmentUID,
TaskName
FROM
dbo.MSP_CustomViewReports_EpmAssignment_UserView AssView
LEFT JOIN
dbo.MSP_CustomViewReports_EpmTask_UserView TaskView
ON
AssView.TaskUID = TaskView.TaskUID
--------------------------------------------------------------------------------------------------------
-- GENERATING FINAL REPORT
--------------------------------------------------------------------------------------------------------
SELECT
upsel.PROJ_UID AS P_UID,
upsel.RES_UID AS R_UID,
ResView.ResourceName AS ResourceName,
upsel.RES_SAVED_DATE AS TBD,
upsel.ASSN_UID AS A_UID,
upsel.TASK_UID AS T_UID,
tasksel.TASK_NAME AS T_NAME,
tfin.h AS SH,
AssView.AssignmentActualWork AS AH
FROM
@upselect upsel
LEFT JOIN
@fin tfin
ON
upsel.ASSN_UID = tfin.ASSN_UID
LEFT JOIN
@report AssView
ON
upsel.ASSN_UID = AssView.AssignmentUID
LEFT JOIN
@tasksel tasksel
ON
upsel.ASSN_UID = tasksel.ASSN_UID
LEFT JOIN
dbo.MSP_CustomViewReports_EpmResource_UserView ResView
ON
upsel.RES_UID = ResView.ResourceUID
WHERE
(1=1)
AND
ResView.ResourceName IN ('Kucherovsky Andrey')
GROUP BY
upsel.PROJ_UID,
upsel.RES_UID,
ResView.ResourceName,
upsel.RES_SAVED_DATE,
upsel.ASSN_UID,
upsel.TASK_UID,
tasksel.TASK_NAME,
tfin.h,
AssView.AssignmentActualWorkBut error in result
(4314 rows affected) (12388 rows affected) (2852 rows affected) (1342 rows affected) (4194 rows affected) Msg 8152, Level 16, State 30, Line 151 String or binary data would be truncated. The statement has been terminated. (2 rows affected) Completion time: 2020-07-21T12:56:59.1425071+03:00
The Line 151 it's RES_UID in this select
INSERT @upselect SELECT ASSN_UID, RES_SAVED_DATE, TASK_UID, PROJ_UID, RES_UID FROM @fin
By DECLARE the tables @fin and @upselect have RES_UID column as UNIQUEIDENTIFIER type.
Original RES_UID we're getting from pjpub.MSP_ASSIGNMENTS_SAVED in this select
INSERT @fin SELECT mt.ASSN_UID, DATEADD(dd,RES_SAVED_DATE, '19831231') AS RES_SAVED_DATE, h AS h, ASSN_TRANS_SUBMIT_DATE, SaveTable.TASK_UID, PROJ_UID, RES_UID FROM @m mt LEFT JOIN pjpub.MSP_ASSIGNMENTS_SAVED SaveTable ON mt.ASSN_UID = SaveTable.ASSN_UIDThe RES_UID from pjpub.MSP_ASSIGNMENTS_SAVED is UNIQUEIDENTIFIER type too.
So, colleagues, what's wrong data types?
MCSA: Security; MCTP: Microsoft ISA 2006