У вас есть
"dbo.zkt_attendance_Date ' (DT_STR, 2, 1252) DATEPART(YYYY, GETDATE() ) ',' (DT_STR, 2, 1252) DATEPART(MM, GETDATE() )','+ (DT_STR, 2, 1252) @[User::Dates] +'"
Это буквально означает
"dbo.zkt_attendance_Date ' (DT_STR, 2, 1252) DATEPART(YYYY, GETDATE() ) ',' (DT_STR, 2, 1252) DATEPART(MM, GETDATE() )','+ (DT_STR, 2, 1252) @[User::Dates] +'"
Двойные кавычки - это начало / конец строкового литерала в языке выражений. Вместо этого вы хотите смешивать и сопоставлять то, что находится в двойных кавычках, с операторами конкатенации +
.
Что-то вроде этого (возвращается добавлено для удобства чтения)
"dbo.zkt_attendance_Date '"
+ (DT_STR, 4, 1252) DATEPART("YYYY", GETDATE() )
+ "','"
+ (DT_STR, 2, 1252) DATEPART("MM", GETDATE() )
+ "', '"
+ (DT_STR, 2, 1252) @[User::Dates]
+ "'"
Кроме того, (DT_STR, 2, 1252) DATEPART("YYYY", GETDATE() )
выйдет из строя, так как у вас есть усечение строки
Расчетное значение для этого , если у меня есть 03 в переменной @ [User :: Dates]
dbo.zkt_attendance_Date '2020','5', '03'