直接流式传输到数据库

我正在使用c#,并且有一个开放的tcpip连接接收数据。 是否可以将流保存到ms sql server数据库,因为我收到它,而不是接收所有数据,然后保存所有数据? 如果流可以在接收时发送到数据库,则不必将整个数据块保留在内存中。 这是可能吗?

您是以BLOB的forms写入数据库,还是以某种forms翻译数据,然后为每一行执行插入?

你在评论中的答案让我感到困惑。 将流写入BLOB列与获取数据然后将其转换为单独行的插入有很大不同。

无论如何,通过首先创建需要插入的blob列的行,重复调用更新语句,可以流式传输到BLOB列:

update myTable set myColumn.Write(@data, @offset, @length) where someid = @someId 

来自流的字节块。

完美的例子就在这里。

SQL Server 2005支持HTTP端点(不需要IIS),因此一种解决方案是在SQL Server上创建Web服务以直接接收流数据。

这些链接解释了设置: http : //codebetter.com/blogs/raymond.lewallen/archive/2005/06/23/65089.aspx http://msdn.microsoft.com/en-us/library/ms345123。 ASPX

有关使用流和数据库的插图,请参见此处和此处 。 实质上,您需要传递重复的缓冲区(理想情况下,SQL Server中的8040字节的倍数)。 请注意,这些示例基于SQL 2000; 使用SQL 2005,varbinary(max)会更容易。 但非常相似。

为什么不在接收数据包时将缓冲区写入文件,然后在传输完成后插入数据库?

如果直接流式传输到数据库,您将长时间保持与数据库的连接,特别是如果客户端的网络连接不是最好的。