SQL Server не ви позволява да предавате параметри на процедура, която не сте дефинирали. Мисля, че най-близкото до този вид дизайн е да използвате незадължителни параметри като така:
CREATE PROCEDURE GetTaskEvents
@TaskName varchar(50),
@ID int = NULL
AS
BEGIN
-- SP Logic
END;
Ще трябва да включите всеки възможен параметър, който може да използвате в дефиницията. Тогава ще бъдете свободни да извикате процедурата по един или друг начин:
EXEC GetTaskEvents @TaskName = 'TESTTASK', @ID = 2;
EXEC GetTaskEvents @TaskName = 'TESTTASK'; -- @ID gets NULL here