SQL CLR: resultados de funciones con valores de tabla de transmisión

Mi problema es muy similar aest problema

Sin embargo, estoy usando SQL Server 2005 Service Pack 2 (SP2) (v9.0.3042) y la solución publicada allí no funciona para mí. Intenté usar ambas cadenas de conexión. Uno está comentado en mi código.

Me doy cuenta de que puedo almacenar todos los resultados en una Lista o ArrayList en la memoria y devolverlos. Lo he hecho con éxito, pero ese no es el objetivo aquí. El objetivo es poder transmitir los resultados a medida que estén disponibles.

¿Es esto posible usando mi versión de SQL Server?

Aquí está mi código: (Tenga en cuenta que los parámetros no se están utilizando actualmente. Hice esto para la depuración)

public static class StoredProcs
{
    [SqlFunction(
        DataAccess = DataAccessKind.Read,
        SystemDataAccess=SystemDataAccessKind.Read,
        FillRowMethodName="FillBaseline",
        TableDefinition = "[baseline_id] [int], [baseline_name] [nvarchar](256), [description] [nvarchar](max), [locked] [bit]"
        )]
    public static IEnumerable fnGetBaselineByID(SqlString projectName, SqlInt32 baselineID)
    {
        string connStr = "context connection=true";
        //string connStr = "data source=.;initial catalog=DBName;integrated security=SSPI;enlist=false";
        using (SqlConnection conn = new SqlConnection(connStr))
        {
            conn.Open();
            using (SqlCommand cmd = new SqlCommand(String.Format(@"
                SELECT *
                FROM [DBName].[dbo].[Baseline] WITH (NOLOCK)
            "), conn))
            {
                using (SqlDataReader reader = cmd.ExecuteReader())
                {
                    while (reader.Read())
                    {
                        yield return new Baseline(reader);
                    }
                }
            }
        };
    }

    public static void FillBaseline(Object obj, out SqlInt32 id, out SqlString name, out SqlString description, out bool locked)
    {
        Baseline baseline = (Baseline)obj;
        id = baseline.mID;
        name = baseline.nName;
        description = baseline.mDescription;
        locked = baseline.mLocked;
    }
}

Aquí está parte de mi script de implementación de SQL:

CREATE ASSEMBLY [MyService_Stored_Procs]
FROM 'C:\temp\assemblyName.dll'
WITH PERMISSION_SET = SAFE

Cuando uso la cadena de conexión "context connection = true" me sale este error:

Se produjo un error al obtener una nueva fila de la Función de valor de tabla definida por el usuario: System.InvalidOperationException: el acceso a datos no está permitido en este contexto. El contexto es una función o método no marcado con DataAccessKind.Read o SystemDataAccessKind.Read, es una devolución de llamada para obtener datos del método FillRow de una función con valor de tabla, o es un método de validación UDT.

Cuando uso la otra cadena de conexión me sale este error:

Se produjo un error al obtener una nueva fila de la Función de valor de tabla definida por el usuario: System.Security.SecurityException: Solicitud de permiso del tipo 'System.Data.SqlClient.SqlClientPermission, System.Data, Version = 2.0.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089 'falló.

Respuestas a la pregunta(3)

Su respuesta a la pregunta