Както посочихте, това е така, защото C#2.0 не поддържа незадължителни параметри.
Едно заобиколно решение може да бъде опаковането на .NET съхранените процедури в обикновени T-SQL съхранени процедури, които приемат параметри по подразбиране.
Например:
CREATE PROCEDURE TestProcWrapper
(
@TestIntWrapperParam int = null
)
AS
EXEC TestProc @TestInt = @TestIntWrapperParam
Малко е грозно, но засега може да ви помогне.