SqlParameter Size - 设置为max size的负面影响?

时间:2008-09-26 14:45:40

标签: c# sql-server ado.net

我有一个SqlCommand,我想在其CommandType = Text上调用Prepare()(不能是存储过程)。为此,我需要将参数的Size属性设置为非零,否则抛出异常。将所有参数的大小设置为最大可能大小是否有任何负面影响,即使实际值的大小永远不会接近该大小?有更好的方法吗?

4 个答案:

答案 0 :(得分:1)

我认为做类似事情的唯一潜在负面影响是参数的内存分配成本。

由于你正在调用'Prepare()',我猜你计划多次对同一个SqlConnection使用SqlCommand,它建议使用可能被使用的离散代码段(如果连接关闭了准备好的命令,在下次使用时必须将命令文本重新发送到服务器。)

如果您知道参数的性质,您可能对它们的潜在尺寸有所了解。如果没有,那么我真的没有看到你有什么替代方案,而不是为每个大小宣布一个非常大的大小 - 大到足以容纳大多数/任何潜在的值。

答案 1 :(得分:0)

如果您使用仅带有参数名称和值的SqlParameter构造函数,这就是框架执行此操作的方式。客户端可能存在轻微的低效率,但我从未发现查询性能存在差异。

答案 2 :(得分:0)

鉴于您使用的是CommandType = Text,您应该能够以编程方式将大小设置为您要发送的参数的实际大小。

当数据大小接近您发送的数据类型的最大大小时,您应该只会看到较差的性能。如果您的参数总是相对于命令文本的大小而言很大,从网络流量的角度来看,通过切换到存储过程只会看到性能上的最小增益。

答案 3 :(得分:0)

请发布您的代码示例。您不需要在参数上设置Size属性以调用.Prepare()。

顺便说一句,你可能真的不需要调用.Prepare(),特别是如果你之后立即调用.Execute()。

相关问题