Su suposición sobre la cadena de conexión es acertada
Debe usar SQL Server Native Client en lugar de SQLOLEDB.1 para admitir VARCHAR(MAX)
y NVARCHAR(MAX)
tipos de datos, de lo contrario, se truncarán de nuevo a sus equivalentes SQLOLEDB.
Entonces querrá usar las siguientes definiciones de parámetros
'For varchar(max) OUTPUT use;
Call cmd.Parameters.Append(cmd.CreateParameter("@detail", adLongVarChar, adParamOutput, -1, strDetail))
'For nvarchar(max) OUTPUT use;
Call cmd.Parameters.Append(cmd.CreateParameter("@detail", adLongVarWChar, adParamOutput, -1, strDetail))
'** Constants **
' adLongVarChar = 201
' adLongVarWChar = 203
' adParamOutput = 2