如何在通过.net调用存储过程之前压缩datatable列?

时间:2013-03-01 09:59:18

标签: .net sql-server tsql datatable dataset

我正在将.net客户端写入远程sql server 2012数据库。客户端通过调用存储过程表值参数作为输入来工作。客户端通过创建.net datatables 来调用这些存储过程,然后将这些数据表作为参数传递(SqlCommand.Paramters.AddWithValue())。当我调用dataAdapter.Fill(dataset)时,数据表将被传输到sql server。这些数据表中的一列包含文件路径,即nvarchar(max)。这可以使数据表非常大。这是一个严重的瓶颈,因为sql server位于世界的另一个地方。我的问题是:是否有可能以某种方式压缩文件路径,以便最大限度地减少通过互联网飞行的数据量?我应该在什么级别进行压缩?或者是否已经自动完成了一些压缩?注意:我说的是列,但当然可以压缩整个数据表。感谢

1 个答案:

答案 0 :(得分:1)

您是否可以控制远程服务器?您是否能够对存储过程进行更改?

我认为没有支持压缩的内置连接类型(虽然可以write your own)但是如果你能够修改你的方法,你可以相当轻松地支持你的通过SQL CLR ...

的要求
  • 将目标sproc更改为接受varbinary(max)而不是表
  • 让你的.NET客户端编码和压缩数据(json可能?)和 然后调用sproc,将其作为二进制有效负载传递
  • 让目标sproc解压缩并将二进制解码为表(通过SQL CLR)
  • ...并继续像往常一样