-
-
Notifications
You must be signed in to change notification settings - Fork 103
Open
Labels
documentationDocumentation may be added or completed on the portalDocumentation may be added or completed on the portalquestionFurther information is requestedFurther information is requested
Description
Hello,
is there a way to get an in memory list as an instantiated IList<T>
from SQL Server stream and have the database cursor consumed/closed?
First I thought extension method ToList()
is for this purpose, but it appears it returns an ISingleStream<List<T>>
var inMemoryCarrierList = contextStream
.CrossApplySqlServerQuery("carrier stream", builder => builder
.FromQuery("select carr_code, carr_name from dbo.carr_old order by carr_code")
.WithMapping(m => new
{
carr_code = m.ToColumn("carr_code"),
carr_name = m.ToColumn("carr_name")
}), "source1")
.ToList("in memory carrier list");
If I get a list this way and I don't consume this stream by, say, outputting to a text file and then I try a query like this on the same ODBC connection:
var arch1 = contextStream
.CrossApplySqlServerQuery("first query from source 1", o => o
.FromQuery("select * from dbo.carr")
.WithMapping(i => new
{
carr_code = i.ToColumn("carr_code"),
carr_name = i.ToColumn("carr_name")
})
, "source1")
.Select("create row to save source1 from first query", i => new { i.carr_name, i.carr_code });
I get error:
Unhandled exception. Paillave.Etl.Core.JobExecutionException: Job execution failed
---> System.Data.Odbc.OdbcException (0x80131937): ERROR [HY000] [Microsoft][ODBC SQL Server Driver]Connection is busy with results for another hstmt
redashimself
Metadata
Metadata
Assignees
Labels
documentationDocumentation may be added or completed on the portalDocumentation may be added or completed on the portalquestionFurther information is requestedFurther information is requested