我正在将 .net 客户端写入远程 sql server 2012 数据库。客户端通过调用以表值参数作为输入的存储过程来工作。客户端通过创建 .net 数据表调用这些存储过程,然后将这些数据表作为参数 ( ) 传递。然后在我调用时将数据表传输到 sql 服务器。这些数据表的一列包含文件路径,它们是SqlCommand.Paramters.AddWithValue()
dataAdapter.Fill(dataset)
nvarchar(max)
. 这会使数据表变得非常大。这是一个严重的瓶颈,因为 sql server 位于世界的另一端。我的问题是:是否有可能以某种方式压缩文件路径,以尽量减少通过 Internet 传输的数据量?我应该在什么级别进行此压缩?还是已经自动完成了一些压缩?注意:我说的是列,但当然可以压缩整个数据表。谢谢
问问题
732 次
1 回答
1
您对远程服务器有任何控制权吗?您可以更改存储过程吗?
我认为没有支持压缩的内置连接类型(尽管可以自己编写),但如果您能够修改您的方法,您可以通过 SQL CLR 轻松支持您的要求......
- 将目标存储过程更改为接受 varbinary(max) 而不是表
- 让您的 .NET 客户端对数据进行编码和压缩(可能是 json?),然后调用 sproc,将其作为二进制有效负载传递
- 让目标存储过程解压缩并将二进制文件解码为表(通过 SQL CLR)
- ...并像以前一样继续
于 2013-03-01T22:13:42.443 回答